我有一个DataGridView
控件,我正在显示用户列表。 DataGridView
与使用ADO.net填充的DataTable
绑定。我正在使用DataGridViewLinkColumn
启用内联编辑完整的行,所有内容都像魅力一样。有两个DataGridViewLinkColumn
。一个具有文本“编辑”,另一个具有值“取消”。当用户点击“取消”时,我会调用CancelEdit
和EndEdit
,然后DataGridView
行将回滚到其原始值。我希望当用户点击任何其他行的“编辑”按钮时执行相同的功能。当单击任何其他行的“编辑”时,它就像用户单击取消一样工作,它再次使Row成为ReadOnly,但它不会回滚到原始值。以下是我的代码,
Private Sub dgvDDMUsers_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvDDMUsers.CellContentClick
Try
Dim senderGrid As DataGridView = DirectCast(sender, DataGridView)
If TypeOf senderGrid.Columns(e.ColumnIndex) Is DataGridViewLinkColumn AndAlso
e.RowIndex >= 0 Then
If senderGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Edit" Then
For Each row As DataGridViewRow In senderGrid.Rows
If row.Index = e.RowIndex Then
row.DefaultCellStyle.BackColor = Color.Yellow
row.ReadOnly = False
row.Cells(dgvDDMUsers.Columns("Edit").Index).Value = "Save"
row.Cells(dgvDDMUsers.Columns("Cancel").Index).Value = "Cancel"
Else
row.DefaultCellStyle.BackColor = Color.White
row.ReadOnly = True
row.Cells(dgvDDMUsers.Columns("Edit").Index).Value = "Edit"
row.Cells(dgvDDMUsers.Columns("Cancel").Index).Value = " "
End If
Next
ElseIf senderGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Save" Then
'' Code for Updating the Row values will come here
ElseIf senderGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "Cancel" Then
senderGrid.CancelEdit()
senderGrid.EndEdit()
senderGrid.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.White
senderGrid.Rows(e.RowIndex).ReadOnly = True
senderGrid.Rows(e.RowIndex).Cells(dgvDDMUsers.Columns("Edit").Index).Value = "Edit"
senderGrid.Rows(e.RowIndex).Cells(dgvDDMUsers.Columns("Cancel").Index).Value = " "
End If
End If
Catch ex As Exception
End Try
End Sub
我尝试在“编辑”点击块中调用senderGrid.CancelEdit()
和senderGrid.EndEdit()
,但它无效。我在这里失踪了什么。为什么它在块内部工作,其中捕获“取消”点击但在代码块内部捕获“编辑”点击。