2012-04-18 97 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