Вы должны воссоздавать свои элементы управления после каждой обратной передачи.
ASP.NET не имеет состояния, то есть когда вы отправляете страницу обратно на сервер, ваши динамически созданные элементы управления больше не будут частью страницы.
На прошлой неделе мне пришлось снова преодолеть эту ситуацию.
Что я сделал?
Я сохранил данные, которые я использовал для создания элементов управления внутри объекта Session. В методе PageLoad я передал те же данные для воссоздания динамических элементов управления.
Я предлагаю следующее:
Напишите метод для создания динамических элементов управления.
В методе PageLoad проверьте, не является ли это обратной передачей ...
if(Page.IsPostBack)
{
// Recreate your controls here.
}
Действительно важная вещь: назначьте уникальные идентификаторы своим динамически созданным элементам управления, чтобы ASP.NET мог воссоздать элементы управления, связывающие их существующие обработчики событий, восстановить их ViewState и т. Д.
myControl.ID = "myId";
Мне было трудно узнать, как эта штука работает. Когда вы узнаете, у вас есть сила в руках. Динамически созданные элементы управления открывают новый мир возможностей.
Как говорил Фрэнк: вы можете использовать ключевое слово "is" таким образом, чтобы облегчить свою жизнь ...
if(child is RadioButtonList)
Примечание:
Стоит упомянуть Обзор жизненного цикла страницы ASP.NET на MSDN для дальнейшего использования.