Во-первых, я хотел бы кое-что уточнить. Является ли это возвращением сообщения (возвращением на сервер), или возвращение сообщения происходит, но оно никогда не попадает в обработчик событий ddlCountry_SelectedIndexChanged?
Я не уверен, какой у вас случай, но если это второй случай, я могу предложить какое-то предложение. Если это первый случай, то это FYI.
Во втором случае (обработчик событий никогда не срабатывает, даже если запрос сделан), вы можете попробовать следующие предложения:
- Запросите Request.Params [ddlCountries.UniqueID] и посмотрите, имеет ли он значение. Если это так, вручную запустите обработчик событий.
- Пока состояние просмотра включено, привязывайте данные списка только тогда, когда они не возвращаются.
- Если состояние просмотра должно быть отключено, тогда поместите привязку данных списка в OnInit вместо OnLoad.
Помните, что при вызове Control.DataBind () состояние просмотра и информация обратной передачи больше не будут доступны из элемента управления. В случае, если состояние просмотра включено, между публикациями назад значения DropDownList будут оставаться неизменными (список не подлежит восстановлению). Если вы выполните другую DataBind в OnLoad, он очистит данные о состоянии своего просмотра, и событие SelectedIndexChanged никогда не будет запущено.
В случае, если состояние просмотра отключено, у вас нет выбора, кроме как каждый раз перепривязывать список. Когда происходит обратная запись, существуют внутренние вызовы ASP.NET для заполнения значения из Request.Params в соответствующие элементы управления, и я подозреваю, что это происходит во время между OnInit и OnLoad. В этом случае восстановление значений списка в OnInit позволит системе корректно инициировать события.
Спасибо за ваше время, прочитав это, и приглашаем всех поправиться, если я ошибаюсь.