2012-02-16 18 views
0

データセットの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"; 

cboDigits.DataBind(); 

あなたがデータソースとDisplayMemberを設定した後:

+0

を試すには、あなたの数字リターンが –

+0

あなたは、クエリが実際に(おそらくデバッグ経由)少なくとも一つのアイテムを返すことを確認した値でありますか? – Servy

答えて

0

は、私はあなたがする必要があると思います。

希望はこれを使用すると、通常、明示的にメソッドDataBindを呼び出す必要がないことを意味し、

+1

私はWinFormsを使用しています。 DataBind()を呼び出す必要はありません。私は – Nick

+0

とは思えません。多分それはあなたのlinqです。次のように試してみましたか? var digit = (DDDataSet.Digits.AsEnumerable()の数字から ここで(!digit.pressed) select digit.name).ToList(); cboDigits.DataSource = digits; 匿名タイプとDisplayMemberを使用しないでください。 –

+0

Databindはメンバーメソッドではありません –

0

ほとんどのコントロールが自動的にデータバインディングを行うことができます。

Linqを使用する場合、ToList()は延期されないため、すべてのデータが計算されます。しかし、comboboxについては、まだDataBind()を使用する必要があるようです。

Winformを使用している場合は、DataBindを呼び出す必要はありません。 Asp.Netを使用している場合は、必要があります。

+0

私はWinformsを使用しています。 – Nick

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); 

       } 
関連する問題