0

我是编程新手,尤其是 VB,我正在尝试制作一个 CSV 阅读器,我可以在其中使用单个搜索框过滤所有内容。这是我用来将 CSV 文件加载到数据网格中的代码:

 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 列的网格视图中,我可以单击列标题并进行排序。我现在想做的是使用我的搜索框(TextBox1),当我输入任何内容时,不匹配的结果就会消失,只留下我的搜索词。我想匹配艺术家或标题。然后,当您清除搜索框时,我想返回显示 CSV 文件(原始网格视图)的所有内容。

我到处搜索,找不到我想要的东西。很多数据库和 SQL 的东西,但不是我想要的数据网格。

有没有人有什么可以帮助的?另外,处理这个问题的最好方法是我处理它的方式吗?将所有条目加载到 gridview 需要几秒钟,所以我不知道是否最好先将它们加载到数组中并过滤它或它应该如何工作。有 12,000 首歌曲,所以需要一点时间。这会是一个太大的数组吗?

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

  1. 我这样做是最有效/最好的方式吗?

  2. 如何按需过滤结果(无论它是否在我的网格中以某种方式通过数组)。编程也超级新手。

非常感谢你的帮助!

4

1 回答 1

1

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

于 2012-04-18T01:24:34.420 回答