gpt4 book ai didi

vb.net - 如何在 CheckBox Click 上刷新绑定(bind)的 DataGridView

转载 作者:行者123 更新时间:2023-12-04 19:06:57 25 4
gpt4 key购买 nike

目标
我需要一种将项目设置为 的方法已完成点击 CheckBox在我的范围内DataGridView .一旦完成,该项目将不再从 DataGridView 中看到。由于 DataView的行过滤器。

解释
我有一个 DataGridView绑定(bind)到 DataView .

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 showing Primary Key and Boolean Value (in red)
这个 DataTable将其主键设置为正确的字段。 Completed字段有一个红色方 block ,只是为了向你们展示我将其设置为 bool 值。
看看我的 DataGridView :
DataGridView showing the result of the bound items
这是我单击复选框的地方,该项目应该被过滤掉(因为复选框 ShowAll 未选中)

问题
当我点击 CheckBox ,该项目保留在 DataGridView .为了过滤掉它,我必须选择另一行。看一看:
Improvement is checked, but remains in the Dgv
当我更改行时,它终于消失了:
Improvement has been filtered out but only when I tried selecting another row
选中完成的复选框后,如何立即将其删除?
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

最佳答案

您可以通过结束 DataRow 的编辑来实现此目的。当单元格的值改变时。

Private Sub Lisp_dgvImprovements_CurrentCellDirtyStateChanged(sender As Object, e As System.EventArgs) Handles Lisp_dgvImprovements.CurrentCellDirtyStateChanged
If (Me.Lisp_dgvImprovements.IsCurrentCellDirty) Then
Me.Lisp_dgvImprovements.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub

Private Sub Lisp_dgvImprovements_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Lisp_dgvImprovements.CellValueChanged
' |-- The index of boolean DataGridViewColumn
If ((e.ColumnIndex = 0) AndAlso (e.RowIndex > -1)) Then
With Me.Lisp_dgvImprovements.Rows(e.RowIndex)
If (Not .IsNewRow) Then
With DirectCast(.DataBoundItem, DataRowView).Row
' |-- The index of boolean DataColumn
.Item(0) = True
.EndEdit()
End With
End If
End With
End If
End Sub

关于vb.net - 如何在 CheckBox Click 上刷新绑定(bind)的 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22046909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com