VB 2012 - Фильтры Bindingsource для фильтрации всех столбцов?

120
13

Я делаю простое приложение базы данных vb. Загрузили мою таблицу в источник привязки, присвоили ее datagridview и теперь выполняют некоторую фильтрацию. В настоящее время у меня есть это, что отлично работает:

FcscustomersBindingSource.Filter = "address1 like '%" + TextBox1.Text + "%'"

И если я затем помечаю "OR address2 like"% "+ TextBox1.Text +"% ", то он успешно выполняет поиск по обоим столбцам. Но у меня много столбцов. есть ли в любом случае фильтр, основанный на ВСЕХ столбцах, без необходимости явно указывать фильтр в каждом поле?

что-то вроде FcscustomersBindingSource.Filter = "* like '%" + TextBox1.Text + "%'???? Я знаю, что не правильный синтаксис, очевидно, но мой вопрос в том, есть ли способ просто сказать ему фильтр на основе любое совпадение в любом столбце?

спросил(а) 2017-09-14T14:15:00+03:00 3 года назад
1
Решение
105

Что-то вроде этого, возможно, решит вашу проблему. Добавьте все данные столбцов (или столбцы, связанные с адресом), наконец, один столбец (скрытый) и используйте фильтр только в последнем столбце. Любая строка с ячейкой, имеющей "merlon", будет показана только (образец принимает несвязанное datagridview)...

    Dim dt As New DataTable

dt.Columns.Add("adrs1", GetType(String))
dt.Columns.Add("adrs2", GetType(String))
dt.Columns.Add("adrsAll", GetType(String))
dt.Columns("adrsAll").Expression = "adrs1 + adrs2"

dt.Rows.Add("Merlon Street", "Kenzon Boulevard")
dt.Rows.Add("Chaplin Street", "Merlon Boulevard")
dt.Rows.Add("Hans Strasse", "Metrich House")

Dim datagridview1 As New DataGridView()
datagridview1.AutoGenerateColumns = True
Me.Controls.Add(datagridview1)
datagridview1.Dock = DockStyle.Fill
Dim source1 As New BindingSource()
source1.DataSource = dt
datagridview1.DataSource = source1
source1.Filter = "adrsAll LIKE '%merlon%'"

ответил(а) 2018-09-09T13:15:00+03:00 2 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема