ASP.Net dropdownlist выбранное значение

у меня такое чувство, что мне не хватает чего-то действительно очевидного, я не могу захватить выбранное значение моего выпадающего списка; значение переименовывает первый элемент в списке. Я установил DropListList autopostback элемента управления свойство правда. У меня есть 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>

спасибо заранее за вашу помощь!

3 ответов


My off the cuff guess - вы, возможно, повторно заполняете список на обратной почте, и это вызывает сброс выбранного индекса.


где твоя 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 = ...

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