Лучший способ восстановить дочерние элементы управления на полпути в жизненном цикле в asp.net - PullRequest
0 голосов
/ 08 сентября 2011

Представьте, что у нас есть страница веб-формы с динамически создаваемым флажком и указателем даты и времени. Если этот флажок установлен, то на странице отображается время выбора даты, в противном случае это не так.

Если я добавлю логику для динамического создания средства выбора даты в зависимости от состояния флажка в CreateChildControls, тогда он будет работать при начальной загрузке, но когда кто-то нажимает на флажок, жизненный цикл равен

  • CreateChildControls
  • Checkbox_onClick
  • Рендер

Итак, в момент, когда событие OnClick называется datetimepicker, уже создано и добавлено в дерево элементов управления.

Какой лучший способ справиться с этим (имея в виду гораздо более сложный интерфейс, чем описано здесь)

a) Сделайте дату и время скрытыми в Checkbox_onClick (кажется расточительным создание множества элементов управления, которые вам могут не понадобиться, а затем скрытие некоторых из них)

b) То же, что и выше, но либо добавление / удаление элемента управления из дерева в Render (разделяет логику между CreateChildControl и onClick, которые должны обрабатывать как добавление, если еще не сделано, так и удаление, если оно уже есть)

в) Если нажата какая-то кнопка, в OnRender удалите ВСЕ дочерние элементы управления и заново создайте их заново. (кажется неэффективным)

г) Что-то еще

1 Ответ

2 голосов
/ 08 сентября 2011

Наличие всех событий, связанных с вами, является самым простым, а установка Visible в значение false также является самым простым, если элемент управления не требуется (Visible), он не будет отображаться и, следовательно, не создается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...