2012-02-16 148 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); 

       }