在datagridview(vb.net)中,RowLeave在行的最后一个单元格中的CellEndEdit之前触发

时间:2018-09-11 18:43:37

标签: vb.net datagridview datarow

Why didn't trigger the CellEndEdit event of DataGridView这里有一个类似的问题,因此请不要告诉我它已经回答了。 :-)该解决方案解决的是单击网格外的问题,而不是跳出该行的最后一个单元格。

我正在将数据输入到datagridview的新行中。当我离开该行时,我会检查该行是否为新行。如果是新行,则将数据添加到数据库中。但是,当我跳出最后一个单元格时,将触发RowLeave并且行中的最后一个单元格为空。其他单元格显示数据,但不显示最后一个。

我验证了跳出最后一个字段时,在CellEndEdit之前会触发LeaveRow。

如果我在最后一个单元格中输入数据并单击上一个单元格,则离开该行,它将捕获最后一个单元格中的数据。

如何在RowLeave事件触发前强制保存在最后一个单元格中输入的值?我将新行保存在RowLeave事件中。

这是RowLeave事件的代码

Private Sub dgVisa_RowLeave(sender As Object, e As DataGridViewCellEventArgs) Handles dgVisa.RowLeave

    Dim row As DataGridViewRow = dgVisa.CurrentRow

    If dgVisa.IsCurrentRowDirty Then

        MsgBox(row.Cells(0).FormattedValue)
        MsgBox(row.Cells(1).FormattedValue)
        MsgBox(row.Cells(2).FormattedValue)
        MsgBox(row.Cells(3).FormattedValue)
        MsgBox(row.Cells(4).FormattedValue)
        MsgBox(row.Cells(5).FormattedValue)


        If gbolUserAddedRow = True Then

            Dim AddRecord As New GetMSCADPaymentDetailsTableAdapters.uspMSGetMSCADBankDetailsByCreditCardTypeIdentTableAdapter

            AddRecord.Insert(#9/1/2018#,
                             1,
                             5,
                             1,
                             4)

            AddRecord.Insert(CDate(row.Cells(1).FormattedValue),
                             1,
                             CDbl(row.Cells(3).FormattedValue),
                             CDbl(row.Cells(4).FormattedValue),
                             CDbl(row.Cells(5).FormattedValue))

            gbolUserAddedRow = False


        End If

    End If

End Sub

1 个答案:

答案 0 :(得分:0)

我不知道这是否只是一种解决方法,但我确实从另一个解决该问题的问题中得到了一些帮助。

我将dgVisa.EndEdit()放在上述代码的开头。它会强制EndCellEdit在其余代码之前触发。

如果有人有更优美的答案,请告诉我。

谢谢! 乔