簡體   English   中英

不使用數據庫時如何過濾datagridview

[英]how to filter a datagridview when a database is not being used

我可以將csv文件的內容讀取到DataGridView1中,但無法從textbox2過濾數據。 我嘗試了網上發現的其他內容,但到目前為止沒有任何效果。 這就是我所擁有的:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim fName As String = ""
    OpenFileDialog1.InitialDirectory = "C:\"
    OpenFileDialog1.Filter = "CSV Files (*.csv)|*.csv"
    OpenFileDialog1.FilterIndex = 2
    OpenFileDialog1.RestoreDirectory = True
    If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
        fName = OpenFileDialog1.FileName
    End If
    Me.TextBox1.Text = fName
    GetData(fName, DataGridView1, True)
End Sub
Private Sub GetData(ByVal Path As String, ByRef DG As DataGridView, Optional ByVal NoHeader As Boolean = False)
    Dim Fields() As String
    Dim Start As Integer = 1
    If NoHeader Then Start = 0
    If Not File.Exists(Path) Then
        Return
    End If
    Dim Lines() As String = File.ReadAllLines(Path)
    Lines(0) = Lines(0).Replace(Chr(34), "")
    Fields = Lines(0).Split(",")
    If NoHeader Then
        For I = 1 To Fields.Count - 1
            Fields(I) = Str(I)
        Next
    End If
    For Each Header As String In Fields
        DG.Columns.Add(Header, Header)
    Next
    For I = Start To Lines.Count - 1
        Lines(I) = Lines(I).Replace(Chr(34), "")
        Fields = Lines(I).Split(",")
        DG.Rows.Add(Fields)
    Next

End Sub

我只希望能夠通過在textbox2中鍵入內容來過濾第5列(csv文件中沒有列標題)。 任何幫助將不勝感激。 謝謝

不要將值添加到DGV ,而是使用DataTable然后DGV進行查詢。 示例認為您有一個用於某些過濾器選擇的組合框-它們是根據您的需要使用的其他方法。 但是,此方法要求您具有標題。

Private dt As New DataTable

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
 Dim fName As String = ""
 OpenFileDialog1.InitialDirectory = "C:\"
 OpenFileDialog1.Filter = "CSV Files (*.csv)|*.csv"
 OpenFileDialog1.FilterIndex = 2
 OpenFileDialog1.RestoreDirectory = True
 If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
    fName = OpenFileDialog1.FileName
 End If
 Me.TextBox1.Text = fName
 LoadData(fName)
 FilterData(combobox1.Text, "some column name")
End Sub

Private Sub LoadData(ByVal Path As String)
 Dim Fields() As String
 Dim Start As Integer = 1
 If NoHeader Then Start = 0
 If Not File.Exists(Path) Then
    Return
 End If
 Dim Lines() As String = File.ReadAllLines(Path)
 Lines(0) = Lines(0).Replace(Chr(34), "")
 Fields = Lines(0).Split(",")
 For I = 1 To Fields.Count - 1
     Fields(I) = Str(I)
 Next
 For Each Header As String In Fields
    dt.Columns.Add(Header, Header)
 Next
 For I = Start To Lines.Count - 1
    Lines(I) = Lines(I).Replace(Chr(34), "")
    Fields = Lines(I).Split(",")
    dt.Rows.Add(Fields)
 Next
End Sub

Private Sub FilterData(filter As String, columnName as string)
  Dim query = From dr As DataRow In dt.Rows Where dr(columnName).ToString = filter
  DGV.DataSource = query
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM