ASP.NET добавить элемент управления при обратной передаче - PullRequest
2 голосов
/ 18 мая 2009

Я собрал простую форму, чтобы выделить понятия динамических форм. Что мне нужно сделать, это добавить элемент управления на страницу, когда пользователь нажимает кнопку «Добавить».

В данный момент у меня есть простой счетчик, в котором хранится количество созданных элементов управления, которое увеличивается при нажатии кнопки.

Сначала я подумал, что это будет так же просто, как вызвать RecreateChildControls (класс наследует от CompositeControl) для обработчика событий. Это создает новые элементы управления на основе увеличенного значения, но все состояние элемента управления теряется. Я предполагаю, что это потому, что событие было запущено после фазы инициализации и загрузки.

Есть ли другой способ сделать это? Я могу заставить его работать, проверив значение обратной передачи в событии Init, однако это выглядит немного странно.

1 Ответ

1 голос
/ 18 мая 2009

Это создает новые элементы управления на основе увеличенного значения, но все состояние элемента управления теряется.

Вы вызываете функцию слишком поздно в жизненном цикле страницы . Состояние применяется к вашим элементам управления для этапа «Загрузка», и поэтому, если элементы управления не созданы за до этого этапа, состояние не будет восстановлено, потому что элементы управления не существуют, когда он пытается применить состояние.

Вам необходимо создать элементы управления в событии Init страницы.

Лично я не фанат динамического управления в ASP.Net. Они имеют свое место, но чаще я выбираю подходящее максимальное количество разрешенных элементов управления, изначально помещаю их все на страницу и только включаю / отключаю / скрываю / показываю их по мере необходимости.

...