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

时间:2011-12-01 14:43:19

标签: c# asp.net drop-down-menu selecteditem

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

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

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

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

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

任何人都知道解决方案吗?

4 个答案:

答案 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所述)。