2016-12-09 8 views
0

나는 텍스트 상자를 만들었고 고객의 데이터베이스를 통해 이름으로 검색하려고합니다. 대부분의 질문은 외부 데이터 세트를 사용하지만 이것은 csv 파일을 사용하여 프로그램에서 작성된 테이블을 사용하는 것입니다.데이터 테이블의 데이터를 사용할 때 DataGridview를 필터링하는 방법은 무엇입니까? VB.net

+2

관련 코드를 추가하십시오. –

+1

검색 하시겠습니까, 아니면 필터링하고 싶습니까? [Ask]를 읽고 [둘러보기] – Plutonix

+0

가져 오기 가장 쉬운 방법은 IMT가 DataTable에서 만든 DateView를 레코드 소스로 사용하고 Dataview의 필터를 사용하는 것입니다. – rheitzman

답변

1

BindingSource에서 활용하여 DataGridView의 데이터 소스로 사용할 수 있습니다. 그런 식으로 BindingSource Filter 속성에서 작업하면 열 이름을 기반으로 모든 유형의 필터를 설정할 수 있습니다. 당신이 볼 수 있듯이

Dim dt As New DataTable("Sample") 
    dt.Columns.Add("Id") 
    dt.Columns.Add("TimeStamp") 

    For i As Int32 = 0 To 9999 
     dt.Rows.Add(New Object() {i, DateTime.Now}) 
    Next 

    Dim bs As New BindingSource 
    bs.DataSource = dt 

    bs.Filter = "Id > 10 AND Id < 20" 

    DataGridView1.DataSource = bs 

, 나는 두 개의 열, 즉 "ID"와 "타임 스탬프"로 DataTable을 정의했습니다 :

는 다음 코드를 확인하시기 바랍니다. 그런 다음 간단한 루프를 사용하여 Idata = 0에서 Id = 9999로 임의의 레코드로 DataTable을 채 웁니다.

그런 다음 DataSource를 DataTable로 지정하여 BindingSource를 선언합니다. Bindinf Source에서 Filter 속성, 열 이름 및 일반 논리 연산자를 사용하여 필터를 설정할 수 있습니다. 내 예에서

, 나는 그 이드가 그런

(11) 사이 (19), 우리는 우리의 DataGridView에 데이터 소스로 BindingSource에 사용할 수있다 그 기록을 시각화 할 수있는 유일한 id 컬럼에있을 필터를 요청했습니다. 그리고 DataGridView DataSource를 할당하기 전에 필터를 적용 할 필요가 없습니다. 실제로 바인딩 후에 각 필터 응용 프로그램은 시각화 된 행에 즉시 반영됩니다.

희망 하시겠습니까?

+0

문자열뿐만 아니라 정수에도 '.filter'명령을 사용할 수 있습니까? – Hywel

+0

예, "Field"라는 문자열 필드가 있다고 가정하면 필터를 필터링해야합니다. bs.Filter = "Field = 'test'"또는 bs.Filter = "Field LIKE '% test %' 와일드 카드로. 주사를 조심해야한다. 따라서 필터 자체와 일치하는 문자열을 벗어나는 것이 좋다. 희망이 도움이된다. – hypnos