0

我在 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")

我使用以下列表框代码:

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

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

谢谢,

/汉斯

4

3 回答 3

1

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

lbl_users.DataSource = users;
lbl_users.DataValueField = "userID";
lbl_users.DataTextField = "name";
lbl_users.DataBind();
于 2013-06-26T15:39:16.527 回答
1

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

lbl_users.DataSource = users;
lbl_users.DataValueField = "Value";
lbl_users.DataTextField = "Text";
lbl_users.DataBind();
于 2013-06-26T15:52:42.157 回答
1

您可以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();
于 2013-06-26T15:51:36.093 回答