Вот решение, которое лучше всего рекомендуется. Он заключается в правильном понимании жизненного цикла страницы !! Элементы управления обратной передачей, такие как раскрывающийся список, восстанавливают свое опубликованное состояние (выбранный элемент опубликованного раскрывающегося списка). Он забывает выбранное значение, потому что вы перепривязываете его в событии Page_Load, которое происходит после загрузки выпадающего списка с опубликованным значением (поскольку состояние просмотра загружается после события Page_Init и до события Page_Load). И в этой привязке в событии Page_Load раскрывающийся список забывает свой восстановленный выбранный элемент. Лучшее решение - выполнить привязку данных в событии Page_Init вместо события Page_Load.
Сделайте что-то вроде ниже ...
Предположим, имя выпадающего списка - lstStates.
protected void Page_Init(object sender, EventArgs e)
{
lstStates.DataSource = QueryDatabase(); //Just an example.
lstStates.DataTextField = "StateName";
lstStates.DataValueField = "StateCode";
lstStates.DataBind();
}
ASP.NET загружает состояние просмотра элемента управления после события Page_Init и до события Page_Load, так что selectedIndex выпадающего списка не будет затронут, и вы получите волшебные результаты волшебным образом !!