【发布时间】:2016-11-15 12:53:25
【问题描述】:
我创建了一个包含 DataGridView 的表单,并将第一列创建为复选框列,并且 fullrowselect 为 True。
我想当我单击行的复选框或更改所选行的复选框值时,应该在数据库中更新该特定记录...
我正确地编写了查询,但遇到了下面提到的一些问题。
现在我第一次尝试在单元格点击事件中...
Private Sub DGVHelp_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVHelp.CellClick
Try
If PubHelpCode = "ACTMAST" And e.ColumnIndex = 0 Then 'if only checkbox column is clicked
cmd = New SqlCommand("Update FAMPAR SET Tag = '" & DGVHelp(0, e.RowIndex).Value & "' where Account_Code = '" & DGVHelp(1, e.RowIndex).Value & "' ", con1)
ExecuteQuery(con1, "EDITCHECKBOX") ' Its my UDF
DGV_Reset()' This clears the datagrid and fetch the data again
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
当我单击复选框单元格(第一列)时,事件首先运行,然后单元格的值被更改......即在 cellclick 事件期间,DGVHelp(0, e.RowIndex).Value 不会改变勾选或取消勾选时的值。
我什至尝试了 cellvaluechanged 事件,但它通过一些我不知道的连续过程将程序挂起......
我应该使用哪个事件来完成我的任务?
如果有与此任务相关的任何其他意见/想法,请分享...
下面分享的 Code OneDrive 链接..
Solution Code link
【问题讨论】:
-
当您单击
DataGridViewCheckBox时,您对单元格所做的更改不会立即提交到数据源,直到您完成编辑单元格,然后更改将被推送到数据源。CellClick或CellContentClick可以,但是你需要提交对数据源的更改,否则你读取的值不是你看到的值。看看这个帖子:DataGridView CheckBox column doesn't apply changes to the underlying bound object -
不要查找任何其他事件,只需使用
CellClick或CellContentClickthis way。 -
是的,我试试@RezaAghaei