Sin*_*dEV 5 vb.net asp.net formview objectdatasource insert
我一直在努力让FormViews按照微软预期的方式工作大约一天,并且已经找到了很多很棒的东西.
我可以在ObjectDataSource.Inserting事件处理程序中捕获e.Exception和e.ReturnValue,我甚至可以通过检查e.ObjectInstance来欺骗和检查ObjectDataSource.ObjectDisposing中Object的其他属性......我甚至了解到FormView的插入处理程序在ObjectDisposing处理程序之后运行所以如果发现问题,我仍然有时间对它做出反应并在FormView上将e.KeepInInsertMode设置为true.
我的问题是,似乎用户输入到Insert表单中的值无论如何都被清除.
那么,在插入方法被触发后,如何防止FormView清除?
(使用ASP.NET + VB)
我不认为在这里发布我的代码会真的做得很好,我将不得不修改它以删除机密业务逻辑的东西......所以我现在就跳过它.
编辑:
我找到了一个临时且公认的非常狡猾的解决方案(如果没有人找到真正的解决方案).
我有一个页面变量定义为:
Dim eInsertArgs As FormViewInsertedEventArgs
Run Code Online (Sandbox Code Playgroud)
然后我在ItemInserted处理程序中执行以下操作
If boolInsertErrorOccurred = False Then
e.KeepInInsertMode = True
eInsertArgs = e
Else
eInsertArgs = Nothing
End If
Run Code Online (Sandbox Code Playgroud)
然后在每个控件上我有这样的控件数据绑定事件:
If IsNothing(eInsertArgs) = False Then
Dim _sender As TextBox = sender
_sender.Text = eInsertArgs.Values("_FieldName")
End If
Run Code Online (Sandbox Code Playgroud)
这样做的结果是我在将ASP.NET绑定到默认(空白)模板后将值设置为提交的值.
请帮我找一个不太可怕的解决方案.:)
小智 1
您需要创建自己的服务器控件,该控件继承自 FormView 控件。
Public Class MyFormView
Inherits FormView
Protected Overrides Sub OnDataSourceViewChanged(ByVal sender As Object,
ByVal e As EventArgs)
If (MyBase.CurrentMode = FormViewMode.Insert) Then
MyBase.RequiresDataBinding = False
Else
MyBase.OnDataSourceViewChanged(sender, e)
End If
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
请查看此页面:http://www.dotnetmonster.com/Uwe/Forum.aspx/asp-net/76885/FormView-Insert
归档时间: |
|
查看次数: |
1682 次 |
最近记录: |