Ответ 1
Мое мнение о манжетах заключается в том, что вы, возможно, повторно заполняете список на почте, и это приводит к тому, что выбранный индекс получает reset.
У меня такое чувство, что мне не хватает чего-то действительно очевидного, я не могу захватить выбранное значение моего DropDownList; значение renaubs - первый элемент в списке. Я установил свойство DropListList autopostback в true. У меня есть SelectedIndexChangedEvent, который вставлен ниже. Это НЕ на главной странице.
protected void ddlRestCity_SelectedIndexChanged(object sender, EventArgs e)
{
if (IsPostBack)
{
r_city = ddlRestCity.SelectedValue.ToString();
}
}
Вот элемент управления DropDownList:
<asp:DropDownList ID="ddlRestCity" runat="server"
Width="100px" AutoPostBack="True"
onselectedindexchanged="ddlRestCity_SelectedIndexChanged">
</asp:DropDownList>
Thanx заранее за вашу помощь!
Мое мнение о манжетах заключается в том, что вы, возможно, повторно заполняете список на почте, и это приводит к тому, что выбранный индекс получает reset.
Где ваш вызов DataBind()
? Вы проверяете !IsPostBack
перед вызовом? Например:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
ddlRestCity.DataSource = ...;
ddlRestCity.DataBind();
}
}
Объяснение: Если вы не проверяете !IsPostBack
до DataBind()
, список будет повторно заполняться до запуска SelectedIndexChanged
(поскольку Page.Load
срабатывает перед дочерними событиями, такими как SelectedIndexChanged
). Когда SelectedIndexChanged
затем запускается, "выбранный элемент" теперь является первым элементом в вновь заполненном списке.
Что такое r_city?
Если это текстовое поле, вам нужно сделать что-то вроде r_city.text = ...
Кроме того, вы можете рассмотреть возможность удаления вашей обратной проверки. Обычно это наиболее полезно в событии page.onload, и обычно вы проверяете if NOT ispostback
...