2016-09-02 4 views
0

У меня есть DataGridView (dataGridView1), что я заселить из базы данных с:vb.net DataGridView Фильтрация модифицированного источника данных

Me.DatagridView1.DataSource = DataTable1 

Я затем добавить 2 колонки (Icon & Статус) в моем DataGridView один с значок и один с описанием в зависимости от значений, извлекаемых из DataTable1 (обычно ошибка, предупреждение и т. д.)

У меня есть drop down (DropDown1) со значениями «Все», «Ошибка», «Предупреждение» и т. д.

Я хочу отфильтровать свой DataGridView основываясь на выбранном значении в DropDown1. , например. Если выбрана «Ошибка», я буду показывать строки с «Ошибка» в столбце «Состояние». Я использую следующий код:

Private Sub DropDown1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDown1.SelectedIndexChanged 
    Dim dt As New DataTable() 

    dt = TryCast(DatagridView1.DataSource, DataTable) 
    If dt IsNot Nothing Then 
     dt.DefaultView.RowFilter = String.Format("Status Like '*" & Trim(Me.DropDown1.Text.ToString) & "*'") 
    End If 
End Sub 

Теперь у меня есть 2 вопроса:

  1. Я имею ошибку говоря, что он не признает статус колонки (что является нормальным, так как при отладке, я вижу, что DataGridView1.DataSource содержит только исходные данные из базы данных, а не столбцы, которые я добавил). Как получить все мои столбцы?
  2. Как удалить все фильтры (если выбрано «Все»)?

ответ

0

ОК у меня есть решение. Первое спасибо theburger dt.DefaultView.RowFilter = "" очищает фильтр.

О источнике данных проблема заключалась в том, что я добавлял столбец непосредственно в сетку вместо того, чтобы добавлять их в мой datatable, а затем обновлять datagrid.

+1

Если вы считаете, что ответ, который размещает пользователь, полезен, лучше ответить на этот вопрос. Это означает, что ответ полезен. Это делает пост более полезным для будущих читателей. –

+0

Я не ** Burger **: P – theBugger

1

Я считаю, что это должно очистить фильтр

dt.DefaultView.RowFilter = "" 

Чтобы получить столбцы, которые Вы должны получить доступ к ним из DataGridView сам

DatagridView1.Rows(x).Cells(y).value 
Смежные вопросы