【发布时间】:2014-03-29 14:34:04
【问题描述】:
目标
我需要一种方法将项目设置为已完成,方法是单击绑定的DataGridView 中的CheckBox。完成后,由于DataView 的行过滤器,不再从DataGridView 看到该项目。
说明
我有一个绑定到DataView 的DataGridView。
Private Sub LoadLispImprovements()
Private ViewLispImprovements As New DataView
ViewLispImprovements.Table = Programs.Tables("dtLispImprovements")
ViewLispImprovements.RowFilter = "Completed=0"
Lisp_dgvImprovements.DataSource = ViewLispImprovements
End Sub
此DataView 的表设置为以下DataTable:
此DataTable 将其主键设置为正确的字段。 Completed 字段有一个红色方块,只是为了向大家展示我将其设置为布尔值。
看看我的DataGridView:
这里是我点击复选框的地方,项目应该被过滤掉(因为复选框 ShowAll 未选中)
问题
当我点击 CheckBox 时,该项目停留在 DataGridView 中。为了过滤掉它,我必须选择另一行。看看:
当我更改行时,它终于消失了:
如何在我选中完成的复选框后立即将其删除?
P.S:是的,我有 CurrentCellDirtyStateChanged 事件处理程序。
Private Sub Lisp_dgvImprovements_CurrentCellDirtyStateChanged(sender As Object, e As System.EventArgs) Handles Lisp_dgvImprovements.CurrentCellDirtyStateChanged
If Lisp_dgvImprovements.IsCurrentCellDirty Then
Lisp_dgvImprovements.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
【问题讨论】:
-
你在
Lisp_dgvImprovements.CommitEdit(DataGridViewDataErrorContexts.Commit)之后尝试过Lisp_dgvImprovements.Refresh()吗? -
@equisde 是的。也没有用。保存到数据库后我也试过了。
标签: vb.net datagridview datatable datasource rowfilter