Как восстановить значение DataRow при сбое проверки вручную? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть приложение .Net с некоторыми DataRows и DataTables.

В таблицах данных есть некоторые ограничения (Столбцы не равны NULL, Уникальные столбцы, Размер столбцов, ...)

Когда пользователь вводит некоторые данные, выполняется следующий код. Когда этот код выполняется, он вызывает проверку данных по умолчанию для столбцов из таблицы данных (Столбцы не равны NULL, Уникальные столбцы, Размер столбцов, ...)

В дополнение к проверке по умолчанию я добавляю некоторые проверки бизнес-логики ...

sub ValidationProcedure
    Dim MyRow as DataRowView = something

    'End edit the user inputs
    Try
        MyRow.EndEdit()
    catch Ex as exception
        Msgbox("Please correct the errors")
        MyRow.CancelEdit()
        exit sub 
    End try

    'Clear previous errors
    MyRow.ClearErrors

    'Business logic checks
    If MyRow.Item("C1") > MyRow.Item("C2") then 'Or whatever condition
        Msgbox("Please correct the errors")
        MyRow.SetColumnError(ColumnId, "C1 should be lower than C2")
        MyRow.CancelEdit()
    end if 
end sub 

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

Кто-нибудь знает, как вернуть строку в исходное состояние перед вызовом процедуры проверки?

Приветствия

...