2013-06-26 2 views
0

У меня проблема с элементом управления ListBox в asp.net. Я использую следующий код: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(); 

пользователей состоит из следующих действий:

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" /> 

Может кто-нибудь объяснить, почему это или как это исправить?

Спасибо,

/Hans

ответ

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 необходимо указать свойство объекта ListItem которые Text и Value поэтому код должен выглядеть следующим образом:

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