我有一个列很少的DataTable。最后一列是boolean类型,它说明行是否有效(应该/不应该显示在DataGridView中)。接下来,我有一个DataView,它被设置为DataGridView的DataSoure:
MyDataView = New DataView(MyDataTable, "Valid = True", Nothing, DataViewRowState.CurrentRows)
MyDataGridView.DataSource = MyDataView 我每隔一秒刷新一次DataTable,每次我都要决定行是否有效。现在它起作用了。如果有效属性设置为false,行将从DGW中消失。
我的表有6行(并且永远都会有)。我想要实现的是,如果valid为false,我不希望从DGV中消失整行。我只想删除单元格中的值,使其看起来为空。
我的观点是,如果表中的行为空,则DGF包含所有行事件(您可以在DGW中看到行,但为空)。每一行都有不同的背景颜色(偶数行为白色,奇数行为灰色)。
如果在表中添加了新行,我不想在DGW中添加新行,我想填充emtpy行。如果从表中删除了某些行,我不想将其从DGW中删除,我只希望清除该行中的单元格……
有没有办法用DataView实现这一点,或者我必须用我的代码手动检查(并在DataView中禁用RowFilter )?谢谢
发布于 2014-01-24 22:08:31
过滤器对此不起作用。您将需要在网格本身中处理它。这里有一个方法可能会对你有所帮助
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 Subhttps://stackoverflow.com/questions/21334077
复制相似问题