为什么我的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所述)。