用于内联编辑的CancelEdit和EndEdit始终不起作用

时间:2016-06-08 00:33:33

标签: vb.net datagridview

我有一个DataGridView控件,我正在显示用户列表。 DataGridView与使用ADO.net填充的DataTable绑定。我正在使用DataGridViewLinkColumn启用内联编辑完整的行,所有内容都像魅力一样。有两个DataGridViewLinkColumn。一个具有文本“编辑”,另一个具有值“取消”。当用户点击“取消”时,我会调用CancelEditEndEdit,然后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(),但它无效。我在这里失踪了什么。为什么它在块内部工作,其中捕获“取消”点击但在代码块内部捕获“编辑”点击。

0 个答案:

没有答案