VB.net动态筛选datagrid

VB.net动态筛选datagrid,vb.net,search,gridview,csv,filter,Vb.net,Search,Gridview,Csv,Filter,我是编程新手,尤其是VB,我正在尝试制作一个CSV阅读器,在这里我可以用一个搜索框过滤所有内容。下面是我用来将CSV文件加载到datagrid中的代码: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SetupDataGridView() 'Dim csvpath As String = Applicat

我是编程新手,尤其是VB,我正在尝试制作一个CSV阅读器,在这里我可以用一个搜索框过滤所有内容。下面是我用来将CSV文件加载到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
这会将艺术家和标题加载到包含两列的gridview中,我可以单击列标题并进行排序。我现在想做的是使用我的搜索框(TextBox1),当我键入任何内容时,让不匹配的结果消失,只留下我的搜索词。我想匹配艺术家或头衔。然后,当您清除搜索框时,我想返回显示CSV文件(原始gridview)的所有内容

我到处都找遍了,找不到我想要的东西。很多数据库和SQL的东西,但不是我想要的datagrid

有人有什么可以帮忙的吗?还有,处理这件事的最好方法是我现在的处理方式吗?将所有条目加载到gridview需要几秒钟的时间,因此我不知道是否最好先将它们加载到数组中并对其进行过滤,或者它应该如何工作。有12000首歌,所以需要一点时间。这样的阵列会不会太大

所以我想我有一个由两部分组成的问题:

  • 我这样做是最有效/最好的方式吗

  • 我如何按需过滤结果(不管它是否在我的网格中,通过数组)。超级新的编程,也


  • 非常感谢你的帮助

    您可以尝试将数据存储在
    DataTable
    对象中,而不是将其直接嵌入
    DataGridView
    中。然后将
    DataGridView
    的数据源链接到
    DataTable.DefaultView
    。然后,您可以使用所演示的
    DefaultView.RowFilter
    筛选表。此外,您还可以使用
    TextBox.Changed
    事件根据输入的值应用过滤器。

    谢谢,我在将CSV加载到数据表时遇到问题。代码似乎不同于将其加载到gridview中。另外,我在过滤gridview时遇到问题。你有没有可能发布一个你上面提到的例子?我不知道把你提到的代码放在哪里。因为我没有空间在这里粘贴我的代码,这里有一个链接,指向它的屏幕截图,其中有问题的部分[链接]