2012-03-22 13 views
0

我创建了一个linq,结果是给我一个itemtypes的列表,并且试图将列表绑定到组合框,但是很奇怪的是,在我设置将DisplayMember和ValueMember第一个组合框,然后加载事件似乎返回,从不执行代码的其余只有一个Combobox数据绑定可以在表单加载事件中处理

private void AddOpenOrderForm_Load(object sender, EventArgs e) 
{ 
    using (context = new MRP_DBEntities()) 
    { 

     var query1 = (from i in context.LookUPs select i.itemType).Distinct(); 
     itemType1CB.DataSource = query1.ToList(); 
     itemType1CB.DisplayMember = "itemType"; 
     itemType1CB.ValueMember = "itemType"; 

     MessageBox.Show("The program will not reach the follow codes"); 

     itemType2CB.DataSource = query1.ToList(); 
     itemType2CB.DisplayMember = "itemType"; 
     itemType2CB.ValueMember = "itemType"; 
     } 


} 
+0

没有例外?输出中什么都没有?你能够通过调试器来完成吗? – 2012-03-22 19:39:31

回答

2

我的猜测是,你得到你只是一个例外没有看到。你已经选择itemType成员在这里:

var query1 = (from i in context.LookUPs select i.itemType).Distinct(); 

...但你正在试图发现这里的每个值的itemType成员:

itemType1CB.DisplayMember = "itemType"; 
itemType1CB.ValueMember = "itemType"; 

我怀疑你应该只将DisplayMemberValueMember作为"",以便您自己显示对象。

我也建议调用ToList一次,而不是使用查询表达式,其中它不是真正减少混乱:

var list = context.LookUPs.Select(i => i.itemType).Distinct().ToList(); 
itemType1CB.DataSource = list; 
itemType2CB.DataSource = list; 

// Unless you've set the display/value members elsewhere, they'll default to "" 
+0

是的,它的工作原理,但我应该摆脱itemType1CB.DisplayMember =“itemType”; itemType1CB.ValueMember =“itemType”;因为我只选择itemType – user1286824 2012-03-22 19:50:11

+0

谢谢你的建议 – user1286824 2012-03-22 19:54:14

+0

@ user1286824:是的,这正是我想说的。 – 2012-03-22 19:57:12

相关问题