Я изо всех сил пытался заставить FormView работать так, как Microsoft ожидает от меня примерно один день, и придумал кучу отличных вещей.
Я могу поймать e.Exception и e.ReturnValue в обработчике событий ObjectDataSource.Inserting, и я даже могу проверять и проверять другие свойства объекта в ObjectDataSource.ObjectDisposing, проверяя e.ObjectInstance ... и я даже узнал что обработчик вставки FormView запускается ПОСЛЕ обработчика ObjectDisposing, поэтому, если обнаружена проблема, у меня все еще есть время, чтобы отреагировать на нее и присвоить e.KeepInInsertMode значение true в FormView.
Моя проблема в том, что значения, введенные пользователем в форму «Вставка», очищаются независимо.
Итак, как предотвратить очистку FormView после запуска метода вставки?
(Использование ASP.NET + VB)
Я не думаю, что размещение моего кода здесь действительно принесет много пользы, и мне придется изменить его, чтобы обрезать конфиденциальную информацию по бизнес-логике ... поэтому я пока пропущу это.
редактирование:
Я нашел временное и по общему признанию ужасно грязное решение (на тот случай, если никто никогда не найдет РЕАЛЬНОГО решения проблемы).
У меня переменная страницы, определенная как:
Dim eInsertArgs As FormViewInsertedEventArgs
А затем я делаю следующее в своем обработчике ItemInserted
If boolInsertErrorOccurred = False Then
e.KeepInInsertMode = True
eInsertArgs = e
Else
eInsertArgs = Nothing
End If
Затем на каждом из элементов управления у меня есть что-то похожее на событие управления данными:
If IsNothing(eInsertArgs) = False Then
Dim _sender As TextBox = sender
_sender.Text = eInsertArgs.Values("_FieldName")
End If
Эффект этого состоит в том, что я устанавливаю значения НАЗАД для переданных значений ПОСЛЕ ТОГО, КАК ASP.NET привязывает FormView к стандартному (пустому) шаблону.
Пожалуйста, помогите мне найти менее ужасное решение. :)