Фильтрация нескольких Datagridview с помощью Textbox без использования SQL - PullRequest
0 голосов
/ 01 февраля 2019

Я бы хотел отфильтровать DataGridView, используя Textbox, чтобы найти совпадения в существующем столбце, определенном ComboBox, в котором есть все имена столбцов в коллекции.

Например, если я выберу «Имя» вComboBox, а затем введите «S» в текстовом поле, DataGridView показывает только строки, в которых значение имени столбца начинается с «S», поэтому я получу «The StackOverFlow», «The Steak» и т. д.

Дело в том, что я не хочу запускать SQL-запрос каждый раз, когда фильтрую, поэтому я сохраню ресурсы.

Вот мой фактический код, где

  • ListProd - это мой DataGridView
  • CBFiltre - это мой ComboBox
  • tbRefChantier - это мой TextBox
  • ClassTables.Produits - это мой DataSet, в котором есть КАЖДАЯ записьиз моей базы данных 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 голосов
/ 01 февраля 2019

Благодаря помощи @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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...