【问题标题】:ASP.NET ListBox converts ListItem from text, value to text, textASP.NET ListBox 将 ListItem 从文本、值转换为文本、文本
【发布时间】:2013-06-26 15:35:28
【问题描述】:

我在 asp.net 中的 ListBox 控件有问题。我使用以下代码:

List<ListItem> users = new List<ListItem>();
foreach (DataRow dr in dtUsers.Rows)
{
     users.Add(new ListItem(dr["name"].ToString(), dr["userID"].ToString()));
}
lb_users.DataSource = users;
lb_users.DataBind();

用户包括以下内容:

ListItem("Hans", "1")
ListItem("Janus", "2")
ListItem("Michael", "3")

但是,当写出绑定到 ListBox (lb_users) 的列表项时,我得到以下信息:

ListItem("Hans", "Hans")
ListItem("Janus", "Janus")
ListItem("Michael", "Michael")

我使用下面的 ListBox 代码:

<asp:ListBox ID="lb_users" runat="server" SelectionMode="Multiple" ClientIDMode="Static" />

谁能解释这是为什么或如何解决它?

谢谢,

/汉斯

【问题讨论】:

    标签: c# asp.net listbox listboxitem


    【解决方案1】:

    您需要设置数据文本和值字段,例如:

    lbl_users.DataSource = users;
    lbl_users.DataValueField = "userID";
    lbl_users.DataTextField = "name";
    lbl_users.DataBind();
    

    【讨论】:

      【解决方案2】:

      您可以像这样手动添加ListItem -

      foreach (DataRow dr in dtUsers.Rows)
      {
          lb_users.Items.Add(new ListItem(dr["name"].ToString(), dr["userID"].ToString())));    
      }
      

      或者你可以直接从datatable绑定。

      lb_users.DataSource = dtUsers;
      lb_users.DataValueField = "userID";
      lb_users.DataTextField = "name";
      lb_users.DataBind();
      

      【讨论】:

        【解决方案3】:

        实际上,因为您要绑定到 listitem,所以您需要指定 ListItem 对象的属性,即 Text 和 Value,因此代码应如下所示:

        lbl_users.DataSource = users;
        lbl_users.DataValueField = "Value";
        lbl_users.DataTextField = "Text";
        lbl_users.DataBind();
        

        【讨论】:

          猜你喜欢
          • 2012-06-05
          • 1970-01-01
          • 1970-01-01
          • 2021-12-12
          • 2012-04-12
          • 2014-09-08
          • 1970-01-01
          • 1970-01-01
          • 2014-07-20
          相关资源
          最近更新 更多