2011-07-05 99 views
0

我有這種方法,它接收一個對象的集合(EmployeeState),這個對象包含這個屬性:IdEmployeeState(int),StateName(string)和Description(string),我需要show in一個組合框只有StateName。這是方法。與此查詢LINQ的問題是,顯示所有列,例如:{Statename的=活動} {Statename的= NotActive} {Statename的=駁回}在Combobox中顯示一個對象

我需要顯示在組合框只有名稱:「活動「,」不活躍「和」駁回「。保持加載到組合框的對象(不要將它傳遞給串列表)

我怎樣才能做到這一點?

 public void loadEmployeeStateCombobox(ICollection<EmployeeState> employeeStateCollection) 
     {   
      var result = from employeeState in employeeStateCollection 
         select new 
         { 
          //employeeState.StateName, 
          bb = employeeState.StateName 
         }; 

      _employeeStatecomboBox.ItemsSource = result.ToList(); 
     } 

回答

0
public void loadEmployeeStateCombobox(ICollection<EmployeeState> employeeStateCollection) 
     {   
      var result = from employeeState in employeeStateCollection 
         select new SelectListItem 
         { 
          //employeeState.StateName, 
          Value = employeeState.Id,//whatever the id prop is 
          Text=employeeState.StateName 
         }; 

      _employeeStatecomboBox.ItemsSource = result.ToList(); 
     } 

或者創建一個字典,這也應該工作。

+0

什麼包含類SelectListItem?或者更好地解釋字典。 – ale

+0

當綁定到控件時,我個人總是喜歡用Id和展示道具綁定對象,以防需要選擇它。您可以通過SelectedListItem或Dictionary來實現它。 –

1

你也可以使用清晰到不重複的國家在你的組合:

_employeeStatecomboBox.ItemsSource = 
       employeeStateCollection.Select(e => e.StateName).Distinct(); 

ComboxBox在winform需要有DisplayMember和ValueMember。以下代碼顯示如何使用相同的值設置值和顯示,但您也可以將該值設置爲狀態的唯一標識符。

 _employeeStatecomboBox.DataSource = employeeStateCollection.Select(e => e.StateName).Distinct(); 
     _employeeStatecomboBox.DisplayMember = "StateName"; 
     _employeeStatecomboBox.ValueMember = "StateName"; 

同樣的事情與ASP.NET存在,但它從我的記憶「DataTextField」和「DataValueField」的。

+0

是的,工作,問題是在組合框加載字符串類型,我怎麼能保持對象EmployeeState?或解析到EmployeeState? – ale

+0

我添加了一些信息。你能告訴我,如果你是WinForm或Asp.Net(網絡形式)? –

+0

我正在使用Wpf ... – ale