2012-04-18 102 views
0

我是編程新手,尤其是VB,我試圖製作一個CSV閱讀器,我可以用一個搜索框來過濾所有的內容。下面是我用我的CSV文件加載到一個DataGrid的代碼:VB.net過濾器datagrid動態

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 

這種負荷的藝術家和標題與2列GridView和我可以單擊列標題和排序就好了。我現在想要做的就是使用我的搜索框(TextBox1),當我輸入任何東西時,讓不匹配的結果消失,只留下我的搜索詞。我想匹配藝術家或標題。然後,當您清除搜索框時,我想回到顯示CSV文件(原始gridview)的所有內容。

我到處搜索,找不到我想要的東西。很多數據庫和SQL的東西,但不是我想要的數據網格。

有沒有人有任何可能的幫助?另外,以我處理它的方式處理這個問題是最好的方法嗎?將所有條目加載到gridview需要花費幾秒鐘的時間,所以我不知道是否最好先將它們加載到數組中,然後過濾它或應該如何工作。有12,000首歌曲,所以需要一點。數組是否太大?

,所以我想我有一個問題兩個部分:

  1. 我在做它最有效的/最好的方法是什麼?

  2. 如何根據需求過濾結果(無論它是否通過某個數組在我的網格上)。超級新編程,也。

非常感謝您的幫助!

回答

1

您可以嘗試將數據存儲在DataTable對象中,而不是直接將其嵌入到DataGridView中。然後將您的DataGridView的數據源鏈接到DataTable.DefaultView。然後,您可以使用DefaultView.RowFilter篩選表格,示例爲here。此外,您可以使用TextBox.Changed事件根據輸入的值應用過濾器。

+0

謝謝,我在加載CSV到數據表時遇到問題。代碼似乎不同於將其加載到gridview中。此外,我有一個問題,獲取gridview過濾。有什麼機會可以發表你上面提到的例子嗎?我不確定在哪裏放置您提到的代碼。由於我沒有空間在這裏粘貼我的代碼,所以這裏是一個鏈接到它的屏幕截圖,有問題的部分[鏈接] http://tinyurl.com/7bnkwtx – user1340081 2012-04-18 13:29:33