Почему SelectedItem моего DropDownList не работает? - PullRequest
4 голосов
/ 01 декабря 2011

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

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

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

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

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

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

Ответы [ 4 ]

10 голосов
/ 01 декабря 2011

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

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

}
2 голосов
/ 01 декабря 2011

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

if (!Page.IsPostBack)
{
    //your code here
}
0 голосов
/ 01 декабря 2011

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

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

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

0 голосов
/ 01 декабря 2011

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

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

...