私はプログラミング、特に 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 のものがありますが、データグリッドに必要なものではありません。
誰かに役立つものはありますか?また、これを処理する最善の方法は、私が処理している方法ですか? すべてのエントリをグリッドビューにロードするのに数秒かかるため、最初にそれらを配列にロードしてそれをフィルタリングする方が良いかどうか、またはどのように機能するかがわかりませんでした。12,000曲あるので少し時間がかかります。それは配列が大きすぎますか?
だから私は2つの部分からなる質問があると思います:
私はそれを最も効率的/最良の方法で行っていますか?
オンデマンドで結果をフィルタリングするにはどうすればよいですか (何らかの方法で配列を介してグリッドにあるかどうか)。プログラミングも超初心者。
手伝ってくれてどうもありがとう!