我遇到了一个由XML文件填充的ASP.NET DropDownList
的问题:
rblState.DataSource = dsState;
rblState.DataValueField = "abbreviation";
rblState.DataTextField = "name";
rblState.DataBind();
这样可以正常工作并显示所有正确的数据但是,当我尝试在单击按钮后从列表中检索所选值时会出现问题:
string state = rblState.SelectedItem.Text;
Console.WriteLine(state);
这始终只输出列表中的第一个值。
任何人都知道解决方案吗?
答案 0 :(得分:10)
您可能正在重新绑定PostBack上的DataSource
。
//only bind on the first request
if (!Page.IsPostBack)
{
rblState.DataSource = dsState;
rblState.DataValueField = "abbreviation";
rblState.DataTextField = "name";
rblState.DataBind();
}
答案 1 :(得分:2)
尝试将填充代码放入
if (!Page.IsPostBack)
{
//your code here
}
答案 2 :(得分:0)
您的控件是否设置了runat="server"
属性?那个人在某一点上咬了我们所有人,我敢肯定。
另外,我相信您必须设置AutoPostBack="true"
,以便在更改列表项时通知服务器。否则我相信如果没有使用新选择的选项更新服务器,你必须得到客户端。
答案 3 :(得分:0)
与任何变量一样,在尝试调用子属性之前,应始终检查它们。
检查SelectedIndex != -1
以确保选择了值或检查以确保SelectedItem != null
。
确保仅在页面首次加载时绑定DropDownList
(如Kemal所述)。