У меня есть приложение .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 завершился успешно.
Я ожидаю, что строка вернется в исходное состояние перед вызовом проверки
Кто-нибудь знает, как вернуть строку в исходное состояние перед вызовом процедуры проверки?
Приветствия