2014-01-24 3 views
0

У меня есть DataTable с несколькими столбцами. Последний столбец является логическим типом, и он говорит, что строка действительна (должна/не должна отображаться в DataGridView). Далее у меня есть DataView, который установлен в качестве DataSoure в DataGridView:DataView RowFilter удаляет всю строку

MyDataView = New DataView(MyDataTable, "Valid = True", Nothing, DataViewRowState.CurrentRows) 
MyDataGridView.DataSource = MyDataView 

Я нахожусь освежающий DataTable в одном втором интервале и каждый раз, когда я должен решить, если строки являются действительными. Теперь это работает. Если для атрибута Valid установлено значение false, строка исчезает из DGW.

Мой стол имеет 6 рядов (и всегда будет). Я хочу добиться того, что если valid является false, я не хочу, чтобы исчезла целая строка из DGV. Я хочу только удалить значения из ячеек, чтобы они выглядели пустыми.

Я считаю, что DGF содержит все строки, если строка в таблице i пуста (вы можете видеть строки в DGW, но пустые). Каждая строка имеет другой цвет фона (даже строки белые, нечетные - серые).

Если новая строка была добавлена ​​в таблицу, я не хочу добавлять новую строку в DGW, я хочу заполнить строку emtpy. Если какая-то строка была удалена из таблицы, я не хочу удалять ее из DGW, я хочу только очистить ячейки в этой строке ...

Есть ли способ, как добиться этого с помощью DataView или мне нужно проверить его вручную с помощью моего кода (и отключить RowFilter в DataView)? Спасибо

ответ

0

Фильтр не работает для этого. Вам нужно будет обработать его в самой сетке. Вот один из способов, которые могут вам помочь

Private Sub grid_CellPainting(sender As Object, e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles grid.CellPainting 

    If e.RowIndex > -1 AndAlso e.ColumnIndex > -1 Then 
     Dim oVw As DataRowView 
     oVw = TryCast(grid.Rows(e.RowIndex).DataBoundItem, DataRowView) 
     If Not oVw Is Nothing AndAlso CBool(oVw.Item("Valid")) Then 
      e.Handled = True 
      e.PaintBackground(e.ClipBounds, True) 
     End If 
    End If 
End Sub 
Смежные вопросы