Выбранное значение ASP.NET DropDownList

У меня такое чувство, что мне не хватает чего-то действительно очевидного, я не могу захватить выбранное значение моего 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 заранее за вашу помощь!

Ответ 1

Мое мнение о манжетах заключается в том, что вы, возможно, повторно заполняете список на почте, и это приводит к тому, что выбранный индекс получает reset.

Ответ 2

Где ваш вызов DataBind()? Вы проверяете !IsPostBack перед вызовом? Например:

protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        ddlRestCity.DataSource = ...;
        ddlRestCity.DataBind();
    }
}

Объяснение: Если вы не проверяете !IsPostBack до DataBind(), список будет повторно заполняться до запуска SelectedIndexChanged (поскольку Page.Load срабатывает перед дочерними событиями, такими как SelectedIndexChanged). Когда SelectedIndexChanged затем запускается, "выбранный элемент" теперь является первым элементом в вновь заполненном списке.

Ответ 3

Что такое r_city?

Если это текстовое поле, вам нужно сделать что-то вроде r_city.text = ...

Кроме того, вы можете рассмотреть возможность удаления вашей обратной проверки. Обычно это наиболее полезно в событии page.onload, и обычно вы проверяете if NOT ispostback...