我在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")
然而,在写出listitems时,绑定到ListBox(lb_users),我得到以下内容:
ListItem("Hans", "Hans")
ListItem("Janus", "Janus")
ListItem("Michael", "Michael")
我使用以下ListBox代码:
<asp:ListBox ID="lb_users" runat="server" SelectionMode="Multiple" ClientIDMode="Static" />
有人可以解释为什么会这样或如何解决它?
谢谢,
/汉斯
答案 0 :(得分:1)
您需要设置数据文本和值字段,例如:
lbl_users.DataSource = users;
lbl_users.DataValueField = "userID";
lbl_users.DataTextField = "name";
lbl_users.DataBind();
答案 1 :(得分: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();
答案 2 :(得分:1)
实际上因为你绑定到listitem,你需要指定ListItem对象的属性Text和Value,所以代码应该是这样的:
lbl_users.DataSource = users;
lbl_users.DataValueField = "Value";
lbl_users.DataTextField = "Text";
lbl_users.DataBind();