2012-04-18 4 views
0

저는 프로그래밍에 익숙하지 않습니다. 특히 VB에서는 하나의 검색 상자로 모든 내용을 필터링 할 수있는 CSV 판독기를 만들려고합니다. 여기가 데이터 그리드에 내 CSV 파일을로드하는 데 사용되는 코드입니다 : 2 열 함께있는 gridview에즉석에서 VB.net 필터 데이터 격자

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     SetupDataGridView() 
     'Dim csvpath As String = Application.StartupPath & "\csvtest.csv" 
     Dim csvpath As String = "c:\songs.csv" 
     Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(csvpath) 
      MyReader.TextFieldType = FileIO.FieldType.Delimited 
      MyReader.SetDelimiters(",") 
      Dim currentRow As String() 
      While Not MyReader.EndOfData 
       Application.DoEvents() 
       Try 
        currentRow = MyReader.ReadFields() 
        With songsDataGridView 
         .ColumnCount = 2 
         Dim row As String() = New String() {currentRow(0), currentRow(1)} 
         .Rows.Add(row) 
        End With 
       Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException 
        MsgBox("Line " & ex.Message & _ 
         "is not valid and will be skipped.") 
       End Try 

      End While 
     End Using 
    End Sub 

이로드 아티스트와 제목은 내가 열 머리글 및 종류의 잘을 클릭 할 수 있습니다. 지금하고 싶은 것은 검색 상자 (TextBox1)를 사용하는 것입니다. 아무거나 입력하면 일치하지 않는 결과가 내 검색어 만 남겨서 사라집니다. 나는 예술가 또는 제목과 일치하고 싶다. 그런 다음 검색 상자를 지우면 CSV 파일의 모든 내용 (원래 gridview)을 다시 표시하고자합니다.

나는 어디에서나 검색했으며 원하는 것을 정확히 찾을 수 없습니다. 데이터베이스와 SQL을 많이 사용하지만 DataGrid로 원하는 것은 아닙니다.

도움이 될만한 사람이 있습니까? 또한 이것을 처리하는 가장 좋은 방법은 무엇입니까? Gridview에 모든 항목을로드하는 데 몇 초가 걸리므로 어레이에 먼저로드하고 필터를 적용하거나 작동하는 것이 더 좋을지는 몰랐습니다. 12,000 곡이 있으므로 조금만 가져 가세요. 너무 큰 배열일까요?

  1. 오전 내가 가장 효율적인/가장 좋은 방법 일 :

    그래서 내가 두 부분으로 질문이 됐을까?

  2. 원하는대로 결과를 필터링하는 방법 (배열을 통해 그리드에 있는지 여부에 관계없이). 프로그래밍에 익숙하지 않은 사용자도 있습니다.

도움을 주셔서 감사합니다.

답변

1

데이터를 DataGridView에 직접 포함하지 않고 DataTable 개체에 저장해보십시오. 그런 다음 DataGridView의 데이터 소스를 DataTable.DefaultView에 연결하십시오. 그런 다음 DefaultView.RowFilter을 사용하여 here으로 표를 필터링 할 수 있습니다. 또한 TextBox.Changed 이벤트를 사용하여 입력 된 값을 기반으로 필터를 적용 할 수 있습니다.

+0

감사합니다. 데이터 베타에 CSV를로드하는 데 문제가 있습니다. 이 코드는 gridview에로드하는 것과 다릅니다. 또한 필터링 할 gridview 가져 오는 데 문제가 있습니다. 위에서 언급 한 내용을 게시 할 수있는 기회가 있으십니까? 내가 언급 한 코드를 어디에 넣어야할지 모르겠습니다. 여기에 내 코드를 붙여 넣을 공간이 없기 때문에 문제의 파트가있는 스크린 샷 링크가 있습니다. [link] http://tinyurl.com/7bnkwtx – user1340081