2013-06-26 65 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();