2012-02-16 2 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를 사용하여. – Nick

+0

매우 사실이라고 생각하지 않는 DataBind()를 호출 할 필요는 없습니다. 어쩌면 그것은 당신의 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); 

       } 
관련 문제