使用文本框过滤器在Datagridview中搜索

问题描述:

我有searchbox,如下图所示。我希望当我输入一个字母或数字时,数据gridview将显示与我在searchbox中输入的内容相匹配的数据。我已经有了一个代码,但它只适用于一列,它只能在第一时间工作,但当我添加其他数据时,它根本无法工作。你能为此建议一个更好的代码吗?谢谢! :)使用文本框过滤器在Datagridview中搜索

顺便说一句,这是我的过滤代码:

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged 
      EmployeeProfileBindingSource.Filter = String.Format("[Employee_Lname] Like '{0}%'", 
    Me.txtSearch.Text.Trim()) 

     End Sub 

enter image description here

Image here

+0

什么是'EmployeeProfileBindingSource'?它是'Datagridview'的'DataSource'吗? –

+0

看到我的答案,希望它会帮助:) –

+0

是的,它是Datagridview :) – FrustratedProgrammer

试试这个,它应该摆脱错误的,当您试图与另一个关键字来搜索,这里我填写了Employee_IDEmployee_Fname列,只是为了向你展示它是如何工作的:

Public Class Form1 
    Private dtTableGrd As DataTable 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     DataGridView1.DataSource = EmployeeProfileBindingSource 
     dtTableGrd = EmployeeProfileBindingSource 
    End Sub 

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
     dtTableGrd.DefaultView.RowFilter = "Employee_Fname Like '%" & TextBox1.Text & "%'" 
    End Sub 
End Class 

现在,如果您需要在更多列中进行搜索,只需复制并粘贴上面的过滤代码并更改列的名称即可。

最后,我希望这将帮助你,请让我知道如果这样做:)

+0

对不起,但我认为上面的代码中有语法错误? dtTable.Columns.AddRange({新的DataColumn借助{.ColumnName = “的Employee_ID”,.AutoIncrement =真,.AutoIncrementSeed = 1,.AutoIncrementStep = 1}, 新的DataColumn( “Employee_Fname”)}, 新的DataColumn( “Employee_Lname”)}) 它说有太多的参数'Public Sub addRange(...“ – FrustratedProgrammer

+0

@FrustratedProgrammer,是的,抱歉,这是我的错,但现在试试我修好了,我删除了' }''在'(“Employee_Fname”)之后,并且我也改变了这一行:'dtTableGrd.DefaultView.RowFilter =“Employee_Fname Like'%”&TextBox1.Text&“%'”',我编辑了我的答案。 –

+0

@FrustratedProgrammer 。你也可以在这里看到> [Clip](https://www.dropbox.com/s/vh80dj6pozozy2t/Clip_2.mp4?dl=0) –