2016-12-09 4 views
0

Я создал текстовое поле и хочу, чтобы он искал базу данных клиентов по имени. Большинство вопросов используют внешний набор данных, но это просто использование таблицы, созданной в программе, с использованием файла csv.Как фильтровать datagridview при использовании данных из datatable? VB.net

+2

Добавить соответствующий код. –

+1

Вы хотите, чтобы он искал или вы хотите его фильтровать? DataTables имеет встроенную фильтрационную способность. Как и в случае с этим, это слишком велико - прочитайте [Ask] и возьмите [Tour] – Plutonix

+0

Простейший способ, которым IMO должен использовать DateView, созданный из вашего DataTable, в качестве источника записи и использовать фильтр Dataview's. – rheitzman

ответ

1

Вы можете воспользоваться 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: на самом деле после привязки каждое приложение фильтра сразу отразится на визуализированных строках.

Надеюсь, что это поможет

+0

Могу ли я использовать команду «.filter» для строк, а также целых чисел? – Hywel

+0

Да, предположим, что у вас есть строковое поле с именем «Поле», ваш фильтр может быть: bs.Filter = «Field = 'test» или bs.Filter = «Поле LIKE»% test%', если вам нужно фильтровать по шаблону. Однако вы должны следить за инъекцией, поэтому лучше избегать строки, которая согласуется с самим фильтром. Надеюсь, это поможет – hypnos

 Смежные вопросы

  • Нет связанных вопросов^_^