Привязка данных на CompositeControls
У меня есть составной элемент управления, который имеет DropDownList внутри.
У меня проблема в следующем: когда я загружаю данные в Page_Load (при первой загрузке страницы) все работает нормально, но когда есть обратная передача и я хочу обновить источник данных (я имею в виду, с другим один), источник данных сохраняется в ViewState, но не привязывается к раскрывающемуся списку.
Я обнаружил, что это происходит, потому что жизненный цикл страницы изменяется с первого раза, когда она отображается во второй раз:
- 1-й раз: Page_Load - CreateChildControls
- 2-й раз: CreateChildControls - Page_Load - Function_Called_On_Postback
Поэтому моя проблема заключается в том, что я делаю привязку данных в CreateChildControls(), но источник данных устанавливается в Function_Called_On_Postback (), поэтому выпадающий список не получает изменений.
Вы знаете, как я могу это исправить? У вас есть хотя бы совет?
Большое спасибо!
1 ответ
Я предполагаю, что обратная связь вызвана некоторым событием на странице, таким как выбранный индекс, измененный в нашем DDL, или событием нажатия кнопки. Если это так, то вы должны иметь возможность установить источник данных DDL в методе обработчика события, о котором идет речь.
Чтобы это работало правильно, вам нужно будет загрузить данные для DDL в методе Page_Load при первоначальной загрузке, а не на почтовых отправках. Это можно проверить с помощью Page.IsPostBack.
if(!Page.IsPostBack) { /* initial load data binding of the DDL */ }