Вам необходимо добавить свои динамические строки в таблицу в Page_Init
, а не Page_Load
.Если вы создаете его в Page_Load
, ваши новые строки не будут добавлены в ViewState, и вы увидите эту проблему.
К сожалению, вы добавляете их в ответ на событие на стороне сервера, которое может оказаться сложным.Вам все еще нужно добавить строки в Page_Init
, но когда страница возвращается назад, а вы в Page_Init
, событие selectedIndexChanged
еще не сработало.Это слишком рано в жизненном цикле страницы.
Если вы хотите узнать, сработал ли он по Page_Init
, я нашел единственный способ - изучить коллекцию Request.Form("__EVENTTARGET")
в этой точке.Он содержит идентификатор элемента управления, который вызвал обратную передачу - в вашем случае это будет раскрывающийся список.Элемент управления, который вызвал событие, будет присутствовать, но будет определен идентификатор, т. Е. Не MyControID, а ctl_MasterPageContentHolderID_NamingContainer1_MyControlID` или тому подобное - так что вам придется учитывать его при поиске.Как только вы определили, что это событие сработало, вы можете добавить строки.Как только они будут добавлены туда, они не исчезнут.
Как я уже сказал, сложно работать, но я успешно делал это в прошлом.Как правило, по этой причине очень сложно работать с динамическими элементами управления.Вы можете рассмотреть альтернативы.В любом случае, удачи в этом.