Я боролся с тем, чтобы FormViews работал так, как ожидает от меня Microsoft, около дня, и я придумал кучу отличных вещей.
Я могу поймать e.Exception и e.ReturnValue в обработчике событий ObjectDataSource.Inserting, и я могу даже обмануть и проверить другие свойства объекта в ObjectDataSource.ObjectDisposing, проверив e.ObjectInstance ... и я даже узнал, что FormView Inserting Обработчик запускается ПОСЛЕ обработчика ObjectDisposing, поэтому, если обнаружена проблема, у меня еще есть время отреагировать на нее и установить для e.KeepInInsertMode значение true в FormView.
Моя проблема в том, что кажется, что значения, введенные пользователем в форму вставки, очищаются независимо.
Итак, как мне предотвратить очистку FormView после срабатывания метода Insert?
(Используя 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 с шаблоном по умолчанию (пустым).
Пожалуйста, помогите мне найти менее ужасное решение. :)