Почему 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"
поэтому он уведомляет сервер, когда вы изменяете элемент списка. В противном случае, я полагаю, вы должны получить его на стороне клиента, если он не обновляет сервер с помощью новой выбранной опции.