2014-08-28 40 views
0

我創建了一個動態的複選框列表,通過linq填充。複選框的列表並沒有被創建,而是顯示了應該是名字+姓氏的值(文本),而是顯示了用戶的ID。複選框列表顯示ID而不是文本

這是我做了什麼:

private void CreateUsersList() 
    { 
     chkUsers.Items.Clear(); 

     var query = (from u in context.SkillAssestUsers 
        select new 
         { 
          u.ID, 
          u.Name, 
          u.Surname 
         }).OrderBy(x => x.Name).ToList(); 

     chkUsers.AutoPostBack = false; 
     chkUsers.CellPadding = 5; 
     chkUsers.CellSpacing = 5; 
     chkUsers.RepeatColumns = 4; 
     chkUsers.RepeatDirection = RepeatDirection.Horizontal; 
     chkUsers.RepeatLayout = RepeatLayout.Table; 
     chkUsers.TextAlign = TextAlign.Right; 
     chkUsers.CssClass = "CheckBoxList"; 

     if (query != null) 
     { 
      foreach (var result in query) 
      { 
       string fullName = result.Name + " " + result.Surname; 
       CheckBox cb = new CheckBox(); 
       cb.ID = result.ID.ToString(); 
       cb.Text = result.Name + " " + result.Surname; 
       cb.AutoPostBack = false; 
       cb.CssClass = "CheckBox"; 

       chkUsers.Items.Add(new ListItem(result.ID.ToString(), result.Name + " " + result.Surname)); 
       chkUsers.Controls.Add(new LiteralControl("<br>")); 
      } 
     } 
    } 

這是數據是怎麼來過,當我運行該項目:

enter image description here

因此而不是ID的我想要顯示的姓名,但我不明白我在做什麼錯...

有人請指點我在正確的方向嗎?任何幫助將不勝感激...

回答

1

,這是因爲一個ListItem的構造函數是:

public ListItem(
    string text, 
    string value 
) 

因此改變這一行:

chkUsers.Items.Add(new ListItem(result.ID.ToString(), 
        result.Name + " " + result.Surname)); 

這樣:

chkUsers.Items.Add(new ListItem(result.Name + " " + result.Surname, 
         result.ID.ToString())); 

參考:

  1. ListItem Constructor (String, String)
  2. ListItem Class
相關問題