Я создал текстовое поле и хочу, чтобы он искал базу данных клиентов по имени. Большинство вопросов используют внешний набор данных, но это просто использование таблицы, созданной в программе, с использованием файла csv.Как фильтровать datagridview при использовании данных из datatable? VB.net
ответ
Вы можете воспользоваться BindingSource
, который будет использоваться в качестве источника данных вашего DataGridView. Таким образом, действуя на свойство фильтра BindingSource, вы можете установить любой тип фильтров на основе имени столбца.
Пожалуйста, проверьте следующий фрагмент:
Dim dt As New DataTable("Sample")
dt.Columns.Add("Id")
dt.Columns.Add("TimeStamp")
For i As Int32 = 0 To 9999
dt.Rows.Add(New Object() {i, DateTime.Now})
Next
Dim bs As New BindingSource
bs.DataSource = dt
bs.Filter = "Id > 10 AND Id < 20"
DataGridView1.DataSource = bs
Как вы можете видеть, я определил DataTable с двумя столбцами, а именно: «Id» и «TimeStamp». Затем с помощью простого цикла я заполнил свой DataTable некоторыми случайными записями для Id = 0 до Id = 9999.
После этого мы объявляем источник BindingSource, указав, что его DataSource является нашей DataTable. В источнике Bindinf мы можем установить любой фильтр, используя свойство Filter, имена столбцов и общие логические операторы.
В моем примере, я уже просил фильтр, чтобы быть на единственном столбце Id, чтобы визуализировать те записи, чей идентификатор находится между 11 и 19.
Тогда мы могли бы использовать BindingSource как наш DataGridView DataSource. Обратите внимание, что фильтры не должны применяться перед назначением DataGridView DataSource: на самом деле после привязки каждое приложение фильтра сразу отразится на визуализированных строках.
Надеюсь, что это поможет
Могу ли я использовать команду «.filter» для строк, а также целых чисел? – Hywel
Да, предположим, что у вас есть строковое поле с именем «Поле», ваш фильтр может быть: bs.Filter = «Field = 'test» или bs.Filter = «Поле LIKE»% test%', если вам нужно фильтровать по шаблону. Однако вы должны следить за инъекцией, поэтому лучше избегать строки, которая согласуется с самим фильтром. Надеюсь, это поможет – hypnos
Добавить соответствующий код. –
Вы хотите, чтобы он искал или вы хотите его фильтровать? DataTables имеет встроенную фильтрационную способность. Как и в случае с этим, это слишком велико - прочитайте [Ask] и возьмите [Tour] – Plutonix
Простейший способ, которым IMO должен использовать DateView, созданный из вашего DataTable, в качестве источника записи и использовать фильтр Dataview's. – rheitzman