Почему SelectedItem моего DropDownList не работает?

У меня проблема с ASP.NET DropDownList который заполняется файлом XML:

rblState.DataSource = dsState;
rblState.DataValueField = "abbreviation";
rblState.DataTextField = "name";
rblState.DataBind();

Это работает нормально и отображает все нужные данные, однако проблема возникает, когда я пытаюсь извлечь выбранное значение из списка после нажатия кнопки:

string state = rblState.SelectedItem.Text;
Console.WriteLine(state);

Это всегда выводит только первое значение в списке.

Кто-нибудь знает решение этой проблемы?

4 ответа

Решение

Вы, вероятно, повторно связываете DataSource на PostBack.

//only bind on the first request
if (!Page.IsPostBack)
{
    rblState.DataSource = dsState;
    rblState.DataValueField = "abbreviation";
    rblState.DataTextField = "name";
    rblState.DataBind();

}

Попробуйте поместить свои заполненные коды в

if (!Page.IsPostBack)
{
    //your code here
}

Как и с любыми переменными, вы всегда должны проверять их, прежде чем пытаться вызывать подсвойства.

Проверьте SelectedIndex != -1 чтобы убедиться, что значение было выбрано ИЛИ проверьте, чтобы убедиться, что SelectedItem != null,

Убедитесь, что вы связываете DropDownList только при первой загрузке страницы (как сказал Кемаль).

Ваш контроль имеет runat="server" свойство установлено? Я уверен, что нас всех укусили в тот или иной момент.

Также я считаю, что вы должны установить свой AutoPostBack="true" поэтому он уведомляет сервер, когда вы изменяете элемент списка. В противном случае, я полагаю, вы должны получить его на стороне клиента, если он не обновляет сервер с помощью новой выбранной опции.

Другие вопросы по тегам