2012-02-16 147 views
0

我正試圖用DataSet上的LINQ查詢生成的數據填充組合框。問題是,組合框中沒有任何顯示。完全一樣。使用LINQ查詢填充組合框

var digits = 
    (from digit in DDDataSet.Digits.AsEnumerable() 
    where (!digit.pressed) 
    select new {DigitList = digit.name}); 
cboDigits.DataSource = digits.ToList(); 
cboDigits.DisplayMember = "DigitList"; 

任何想法?

+0

您是否使用數據綁定是你的數字返回值 – 2012-02-16 20:57:43

+0

您是否驗證了查詢實際返回的至少一個項目(可能通過調試)? – Servy 2012-02-16 21:24:44

回答

0

我想你需要:你設置DataSource和DisplayMember後

cboDigits.DataBind(); 

希望這有助於

+1

使用WinForms的Im。沒有必要調用DataBind()我不認爲 – Nick 2012-02-16 21:19:21

+0

非常真實。也許這是你的linq。你有沒有這樣試過: var digits = (從DDDataSet.Digits.AsEnumerable()中的數字開始) where(!digit.pressed) select digit.name).ToList(); cboDigits.DataSource = digits; 沒有匿名類型和DisplayMember? – 2012-02-17 18:38:26

+0

Databind不是成員方法 – 2015-06-23 22:42:57

0

大多數控件自動完成數據綁定,這意味着你通常不需要調用方法DataBind明確。

Linq在使用ToList()時不會被推遲,所以所有的數據都會被計算出來。但是,對於combobox,似乎仍需要使用DataBind()

如果您使用的是Winform,則不需要調用DataBind。如果您使用Asp.Net,您將需要。

+0

是的,我正在使用Winforms。 – Nick 2012-02-16 21:19:31

0

只是試試這個

var stuff = dg.Stuffs.Where(c=> c.admin !=1).ToList(); 
       for (int i = 0; i < stuff.Count; i++) 
       { 
        string test = stuff.ElementAt(i).Name; 
        comboBox1.Items.Add(test); 

       }