Привязка данных на 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 */ }
Другие вопросы по тегам