2011-07-05 52 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