Представьте, что у нас есть страница веб-формы с динамически создаваемым флажком и указателем даты и времени. Если этот флажок установлен, то на странице отображается время выбора даты, в противном случае это не так.
Если я добавлю логику для динамического создания средства выбора даты в зависимости от состояния флажка в CreateChildControls, тогда он будет работать при начальной загрузке, но когда кто-то нажимает на флажок, жизненный цикл равен
- CreateChildControls
- Checkbox_onClick
- Рендер
Итак, в момент, когда событие OnClick называется datetimepicker, уже создано и добавлено в дерево элементов управления.
Какой лучший способ справиться с этим (имея в виду гораздо более сложный интерфейс, чем описано здесь)
a) Сделайте дату и время скрытыми в Checkbox_onClick (кажется расточительным создание множества элементов управления, которые вам могут не понадобиться, а затем скрытие некоторых из них)
b) То же, что и выше, но либо добавление / удаление элемента управления из дерева в Render (разделяет логику между CreateChildControl и onClick, которые должны обрабатывать как добавление, если еще не сделано, так и удаление, если оно уже есть)
в) Если нажата какая-то кнопка, в OnRender удалите ВСЕ дочерние элементы управления и заново создайте их заново. (кажется неэффективным)
г) Что-то еще