使用文本框过滤多个Datagridview而不使用SQL

时间:2019-02-01 09:52:02

标签: vb.net filter datagridview textbox

我想使用文本框过滤DataGridView,以在由具有组合中所有列名称的ComboBox定义的现有列中查找匹配项。

例如,如果我在ComboBox中选择“名称”,然后在文本框中输入“ S”,则DataGridView仅显示“名称”列以“ S”开头的行,因此我将得到“ StackOverFlow”,“牛排”等等。

问题是,我不想每次过滤时都启动SQL请求,所以我将节省资源。

这是我的实际代码在哪里

  • ListProd是我的DataGridView
  • CBFiltre是我的组合框
  • tbRefChantier是我的文本框
  • ClassTables.Produits是我的数据集,具有我的MariaDB数据库中的每个条目

    Private Sub tbRefChantier_TextChanged(sender As Object, e As EventArgs) Handles tbRefChantier.TextChanged
    
        Try
    
            ListeProd.DataSource = ClassTables.Produits.Tables("Produits").Select(CbFiltre.Text & " Like '%" & tbRefChantier.Text & "%'")
    
        Catch Exc As Exception
            MsgBox("Erreur logiciel :" & Chr(10) & Chr(10) & Exc.Message)
    
        End Try
    End Sub
    

但是当我尝试对其进行过滤时,我的DataGridView仅显示

A screenshot of a filtered DataGridView, with no requirement in the filter

但是似乎实际上是过滤的,因为当我键入某些东西时行数会改变

1 个答案:

答案 0 :(得分:1)

由于@jmcilhinney的帮助,我得以解决了这个问题。

我最终以自己的形式创建了

Dim BindingData As New BindingSource

然后

BindingData.DataSource = Class.MyDataSetName.Tables("NameOfTheTable") TheDataGridView.DataSource = BindingData

在Textbox.TextChange上

Try BindingData.Filter = ComboBoxFilter.Text & " Like '%" & TextBoxFilter.Text & "%'" TheDataGridView.DataSource = BindingData Catch Exc As Exception MsgBox("Erreur logiciel :" & Chr(10) & Chr(10) & Exc.Message) End Try