为什么我的DropDownList的SelectedItem不起作用?

我遇到了一个由XML文件填充的ASP.NET DropDownList的问题:

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

这工作正常并显示所有正确的数据,但是,当我尝试从单击按钮后从列表中检索所选值时,会出现问题:

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

这始终只输出列表中的第一个值。

有人知道解决方案吗?

您可能正在重新绑定PostBack上的DataSource

 //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 } 

你的控件是否设置了runat="server"属性? 那个人在某一点上咬了我们所有人,我敢肯定。

此外,我相信您必须设置AutoPostBack="true"以便在更改列表项时通知服务器。 否则我相信如果没有用新选择的选项更新服务器,你必须得到客户端。

与任何变量一样,在尝试调用子属性之前,应始终检查它们。

检查SelectedIndex != -1以确保选择了值或检查以确保SelectedItem != null

确保只在页面首次加载时绑定DropDownList (如Kemal所述)。