使用文本框过滤器在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
试试这个,它应该摆脱错误的,当您试图与另一个关键字来搜索,这里我填写了Employee_ID
和Employee_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
现在,如果您需要在更多列中进行搜索,只需复制并粘贴上面的过滤代码并更改列的名称即可。
最后,我希望这将帮助你,请让我知道如果这样做:)
对不起,但我认为上面的代码中有语法错误? dtTable.Columns.AddRange({新的DataColumn借助{.ColumnName = “的Employee_ID”,.AutoIncrement =真,.AutoIncrementSeed = 1,.AutoIncrementStep = 1}, 新的DataColumn( “Employee_Fname”)}, 新的DataColumn( “Employee_Lname”)}) 它说有太多的参数'Public Sub addRange(...“ – FrustratedProgrammer
@FrustratedProgrammer,是的,抱歉,这是我的错,但现在试试我修好了,我删除了' }''在'(“Employee_Fname”)之后,并且我也改变了这一行:'dtTableGrd.DefaultView.RowFilter =“Employee_Fname Like'%”&TextBox1.Text&“%'”',我编辑了我的答案。 –
@FrustratedProgrammer 。你也可以在这里看到> [Clip](https://www.dropbox.com/s/vh80dj6pozozy2t/Clip_2.mp4?dl=0) –
什么是'EmployeeProfileBindingSource'?它是'Datagridview'的'DataSource'吗? –
看到我的答案,希望它会帮助:) –
是的,它是Datagridview :) – FrustratedProgrammer