2013-06-26 66 views
0

我在asp.net中的ListBox控件有问题。我使用下面的代码:ASP.NET ListBox将ListItem从文本,值转换为文本,文本

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(); 

用户包括以下内容:写出来的时候,listItems中,绑定到列表框(lb_users)

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

不过,我得到以下几点:

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

我用下面的列表框代码:

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

任何人都可以解释为什么这是或如何解决它?

感谢,

/汉斯

回答

1

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

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

你是对的!谢谢! – hansdam

+0

没问题,乐意帮忙 – DGibbs

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(); 
1

其实是因为你绑定到列表项,你需要指定哪些是文本和值ListItem对象的属性,这样的代码应该是这样的:

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