我有一个datagridview,它显示数据库中的数据。在每一行我添加了一个文本值为“Approve”的按钮。当用户点击该按钮时,我希望数据库上的已批准列从0更改为1.我的问题是如何知道单击哪一行的按钮。比如,"UPDATE request SET approved=1 WHERE ID=???"
。我不想在datagridview上向用户显示自动增量ID列。
答案 0 :(得分:0)
这应该给你一个大致的想法。它使用SQLite,但您可以将任何数据包分包。我还为DGV使用了通用索引列名。当然,您也可以省略确认对话框。
Private Sub Mydgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Mydgv.CellContentClick
If TypeOf DirectCast(sender, DataGridView).Columns(e.ColumnIndex) Is DataGridViewButtonColumn AndAlso e.RowIndex >= 0 Then
Select Case e.ColumnIndex
Case Mydgv.Columns("ApproveButton_Col_Name").Index
Dim dr As DialogResult = MessageBox.Show("Are you sure you want to approve this?", "Confirm Approval", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If dr = Windows.Forms.DialogResult.Yes Then
Dim cmd As SQLiteCommand = conData.CreateCommand
cmd.CommandText = "Update request set Approved = 1 WHERE ID = " & CInt(Mydgv.Rows(e.RowIndex).Cells("MyIndex_Col_Name").Value)
Dim rst As Integer
rst = cmd.ExecuteNonQuery()
If rst <> 0 Then
'success
Else
'failure
End If
End If
End Select
End If
End Sub