【问题标题】:Why is my DropDownList's SelectedItem only showing the first item in the list each time?为什么我的 DropDown List Selected Item 每次只显示列表中的第一项?
【发布时间】:2012-01-10 16:52:25
【问题描述】:

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

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

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

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

这总是只输出列表中的第一个值。

有人知道解决办法吗?

【问题讨论】:

  • 此下拉列表的AutoPostBack 属性是否设置为true?

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


【解决方案1】:

您可能正在重新绑定 PostBack 上的 DataSource。而是这样做:

//only bind on the first request
if (!Page.IsPostBack)
{
    rblState.DataSource = dsState;
    rblState.DataValueField = "abbreviation";
    rblState.DataTextField = "name";
    rblState.DataBind();

}

【讨论】:

    【解决方案2】:

    尝试将填充代码放入

    if (!Page.IsPostBack)
    {
        //your code here
    }
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        您的控件是否设置了runat="server" 属性?我敢肯定,那个人在某一时刻把我们都咬了。

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

        【讨论】:

          猜你喜欢
          • 2021-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多