В datagridview (vb.net) RowLeave срабатывает перед CellEndEdit в последней ячейке строки - PullRequest
0 голосов
/ 11 сентября 2018

Здесь есть похожий вопрос Почему не сработало событие CellEndEdit DataGridView , поэтому, пожалуйста, не говорите мне, что на него уже был дан ответ.:-) Это решение направлено на то, чтобы щелкать вне таблицы, а не вставлять из последней ячейки в строке.

Я ввожу данные в новую строку в представлении данных.Когда я покидаю ряд, я проверяю, является ли он новым.Если это новая строка, я добавляю данные в базу данных.Однако, когда я вкладываю из последней ячейки, запускается RowLeave и последняя ячейка в строке пуста.Другие ячейки показывают данные, но не последние.

Я проверил, что LeaveRow срабатывает перед CellEndEdit при переходе из последнего поля.

Если я ввожу данные в последнюю ячейку и щелкаю по предыдущей ячейке, ТО затем покидаю строку, она захватывает данные из последней ячейки.

Как заставить значение, введенное мной впоследняя ячейка, которая будет сохранена ДО события 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 голосов
/ 11 сентября 2018

Я не знаю, если это просто обходной путь, но я взял что-то из другого вопроса, который решает проблему.

Я поместил dgVisa.EndEdit () в начало кода, показанного выше.Это заставляет EndCellEdit сработать до остальной части кода.

Если у кого-то есть более изящный ответ, дайте мне знать.

Спасибо!Джо

...