不使用数据源搜索DataGridView



我正在处理一个小问题(在Datagridview中搜索(

我找到了一个执行搜索功能的代码,但问题是,每当函数启动时,都会重新加载数据库。(当我使用绑定源rowfilter或string.format函数时(,这会使搜索功能变慢,我需要做的是,在我将数据库加载到DGV后,我只需要搜索datagridview中的数据,我不想使用绑定源或设置新的数据视图。

这是我当前的代码,工作正常,只是每当文本更改时,DB都会再次加载。

Me.ACCESSIONTableAdapter.Fill(Me.HomeDataSet.ACCESSION)
Dim dv As New DataView(HomeDataSet.ACCESSION)
dv.RowFilter = String.Format("AC_NO Like '%{0}%' and ac_receiveddt >= '{1}'  and ac_receiveddt <= '{2}'", TextBox1.Text, DateTimePicker1.Text, DateTimePicker2.Text)
ACCESSIONDataGridView.DataSource = dv

那么,有没有其他方法可以在不使用数据源的情况下搜索DGV中当前填充的数据?

数据只有在重新加载时才会重新加载。如果不想再次检索数据,请不要再次调用Fill。只调用Fill一次,以便首先检索数据。将DataTable绑定到BindingSource,将BindingSource绑定到网格。如果要筛选数据,只需设置BindingSourceFilter属性即可。在上面的代码中,您分配给DataViewRowFilter的文本就是您分配给该Filter属性的文本。

您也可以尝试这个

Sub display()
'select query is used to display the list of records from the database to be displayed in the datagridview.
Dim temp As Double = 0
Dim lt As String = "select id as ID, vlname as Last, vfname as First, vmname as Middle, vgnd as Gender, vdob as Birthday, iage as Age, vcourse as Course from tbreg where vlname Like '" + tbsearch.Text + "%' or vfname Like '" + tbsearch.Text + "%' order by vlname asc" 'add desc for descending order/ asc for ascending (order by vlanme desc)
Dim da As New MySqlDataAdapter(lt, con)
con.Open()
Dim ds As New DataSet
da.Fill(ds, "tbreg")
da.Dispose()
dgv.DataSource = ds.Tables(0)
con.Close()
End Sub

只要在他点击按钮或文本框中的文本发生变化时调用该方法即可

最新更新