ASP.Net DropDownList выбранное значение - PullRequest
10 голосов
/ 05 августа 2011

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

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

Ответы [ 3 ]

12 голосов
/ 05 августа 2011

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

8 голосов
/ 05 августа 2011

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

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

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

0 голосов
/ 05 августа 2011

Что такое r_city?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...