首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataView RowFilter删除整行

DataView RowFilter删除整行
EN

Stack Overflow用户
提问于 2014-01-24 21:33:57
回答 1查看 824关注 0票数 0

我有一个列很少的DataTable。最后一列是boolean类型,它说明行是否有效(应该/不应该显示在DataGridView中)。接下来,我有一个DataView,它被设置为DataGridView的DataSoure:

代码语言:javascript
复制
 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 )?谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-01-24 22:08:31

过滤器对此不起作用。您将需要在网格本身中处理它。这里有一个方法可能会对你有所帮助

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21334077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档