2012-03-22 14 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

相關問題