调试网格视图/对象数据源事件
本文关键字:数据源 事件 对象 网格 视图 调试 | 更新日期: 2023-09-27 18:18:32
啊!
我正在使用绑定到 ObjectDataSource 的 ASP.NET GridView 控件:
<asp:ObjectDataSource ID="Things" runat="server"
TypeName="BLL.Thing"
UpdateMethod="UpdateThing"
OnUpdating="Things_Updating"
OnUpdated="Things_Updated">
<UpdateParameters>
<asp:SessionParameter
Name="userContext"
SessionField="UserContext"
Type="Object" />
<asp:Parameter Name="thing" Type="Object" />
</UpdateParameters>
</asp:ObjectDataSource>
单击带有 CommandName="Update" 的 ImageButton 控件会导致发生指定的 OnUpdate 事件,但不会发生指定的 UpdateMethod 或 OnUpdated 事件。
<EditItemTemplate>
<asp:ImageButton ID="ImageButton_Save" runat="server"
CommandName="Update"
SkinID="Save"
CausesValidation="false"
CommandArgument='<%# Eval("Id") %>' />
<asp:ImageButton ID="ImageButton_Cancel" runat="server"
CommandName="Cancel"
SkinID="Cancel"
CausesValidation="false" />
</EditItemTemplate>
输入参数在 OnUpdate 事件中定义,如下所示:
protected void Things_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
e.InputParameters["thing"] = _theThing;
}
不会引发任何异常。该页面只是回发,其中 EditItemTemplate 控件仍然显示。我可以到处放置断点,但小径在Things_Updating结束时停止。似乎发生了一些未由调试器处理或捕获的异常。有没有办法打开引擎盖,看看 ASP.NET 在做什么(或没做什么(?
提前感谢!
BLL.Thing.UpdateThing()
执行吗? 这应该在Things.Updating
之后发生,并且易于调试。 此外,如果有什么东西导致异常,那可能就是它。
编辑:
尝试在处理程序中添加参数以进行GridView.RowUpdating
而不是ObjectDataSource.Updating
。 我通常就是这样做的。 我认为您需要DataSourceView
来修改ObjectDataSource
事件中的更新参数。 (请参阅:对象数据源网格视图插入失败,带空值字典(
protected void gridThings_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
e.NewValues.Add("thing", _theThing);
}
我想到了两件事,可能会导致进度就此停止:
-
你也处理了他
GridView.RowUpdating
事件,并将GridViewUpdateEventArgs.Cancel
属性设置为 true。 像这样:protected void myGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e) { e.Cancel = true; }
-
您在
ObjectDataSource.Updating
事件中执行了类似操作,将ObjectDataSourceMethodEventArgs.Cancel
属性设置为 false。 喜欢这个:private void myObjectDataSource_Updating(object source, ObjectDataSourceMethodEventArgs e) { e.Cancel = true; }
其中任何一个都会停止更新过程,导致类似于您所描述的内容。