在不使用Datasource的情况下搜索DataGridView

时间:2017-08-31 18:33:45

标签: vb.net 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中当前填充的数据?

2 个答案:

答案 0 :(得分:2)

数据只会重新加载,因为您正在重新加载它。如果您不想再次检索数据,请不要再次呼叫Fill。仅调用Fill一次,以便首先检索数据。将DataTable绑定到您的BindingSource,将BindingSource绑定到您的网格。如果要过滤数据,只需设置Filter的{​​{1}}属性即可。您在上面的代码中分配给BindingSource的{​​{1}}的文字就是您为RowFilter属性分配的内容。

答案 1 :(得分:1)

你也可以尝试这个

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

只需在单击按钮或文本框中的文本更改时调用该方法