2009-12-01 2 views
0

를 채울 :C#을 내가 (sqliteAdapter이 DbDataAdapter의에서 유래) DataGridView를 채울 다음 코드를 사용하고 다른 컨트롤

sqliteAdapter.SelectCommand.CommandText = SQLCommand; 
sqliteConn.Open(); 
using (DataTable dt = new DataTable()) 
{ 
    sqLiteAdapter.Fill(dt); 
    dataGridRes.DataSource = dt; 
} 

실제하는 SqlCommand는 다음과 같습니다 이제

SELECT Email NOTNULL AS Sel, Regiao, Distrito, Grupo, MG, ID, Nome, Morada, Email 
FROM assessores 

, 이 DataTable을 다시 사용하여 양식의 다른 컨트롤을 채우고 싶습니다. 즉 4 CheckedListBox 컨트롤입니다. 나는 (예시. 잘못된 코드 만 해당)와 같은 뭔가 "필터링"현재 DataTable에 의해 데이터베이스에 더 이상 연결을 피하기 위해 기대했다 어댑터와 DataTable의 속성과 메소드에

SELECT Distinct Regiao FROM DataTable 
SELECT Distinct Distrito FROM DataTable 
SELECT Distinct Grupo FROM DataTable 
SELECT Distinct MG FROM DataTable 

내 진출이 보람되고있다.

+0

그것은 SQLite는 아래 완벽하게 유효한 그리고 그것은 작동 참조 실수 : –

답변

1

컨트롤은 DataTable뿐만 아니라 모든 컬렉션에 바인딩 할 수 있습니다.

myControl.DataSource = dt.AsEnumerable().Select(dr => dr.Field<string>("Regiao")).Distinct().ToArray(); 
+1

완벽하지 않습니다 : 대신 DataView를 사용합니다. 아직도 LINQ에 대해 배워야합니다. 그러나 이것은 나의 즉각적인 문제를 해결한다. 무리 감사. –

0

당신은 DataTable을 필터링 할 수 있지만 된 DataRow의 배열이 직접 데이터 그리드 또는 다른 데이터에 바인딩 할 수 없습니다 필터링 된 DataTable을,보다는 개체를 반환
당신은 따라서 다음과 같이 LINQ를 사용할 수 있습니다 바운드 컨트롤. ,

DataView dv = new DataView(dt); 
dv.RowFilter = "Filter Expresion"; 

dg.DataSource = dv; 

Sorting and Filtering Data Using a DataView

+0

이것은 초기 시도의 일부 였지만 열에서 별개의 데이터를 검색하는 방법을 찾지 못했습니다. 그래서 나는 그것을 포기했다. –

관련 문제