更新命令不在“动态数据详细信息”视图中

时间:2009-08-11 16:24:10

标签: asp.net entity-framework dynamic-data

我刚刚使用Entity Framework创建了一个非常基本的动态数据Web应用程序,当我从GridView单击编辑命令时,打开详细信息视图,编辑一些字段,然后单击Update链接,没有发生。

我的问题是什么可能导致此更新无效,是否有任何诊断提示?

更多信息似乎EntityDataSource'隐藏'例外。我发现更新或插入操作未完成的原因不止一个,但我不得不使用SQL跟踪并捕获正在发送的命令。手动运行该命令会产生快速且可见的SQL错误。为什么这没有找到我的用户界面是一个谜。

2 个答案:

答案 0 :(得分:5)

通常,无论何时调试或开发动态数据网站,都应该转到Site.master文件并将ScriptManager的属性EnablePartialRendering设置为false:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false"/>

这将使异常更加明显,因为在List / Edit / Insert / Details / ListDetails页面模板上使用了包含DetailsView,FormViews和GridViews的更新面板,因此似乎在地毯下扫描。

我认为您遇到的真正问题与错误处理和更新面板有关。在IE中调试时,您是否在屏幕左下角看到一个感叹号?如果是这样,单击它,您将看到由于未处理的异常而发生的javascript错误(Sys.WebForms.PageRequestManagerServerErrorException)。

有关详情,请查看ScottGu's Blog on the topic

@Aaron的评论:要捕捉他所指的错误还为时过早。我认为,在这种情况下,他想要处理Updated事件,因为EntitydataSource实际上不会抛出异常,直到它为该事件的处理程序提供运行机会:(MSDN):

  

如果更改发生错误   坚持到数据源,   引发了更新的事件和   异常属性   EntityDataSourceChangedEventArgs   对象设置为返回   例外。如果你处理异常   在Updated事件处理程序中,设置   ExceptionHandled属性为true。   这可以防止异常   再次提出。指定值时   ExceptionHandled为false   property,EntityDataSource   重新提出异常。

答案 1 :(得分:0)

如果我尝试从DetailsView控件更新数据,我主要依赖于代码隐藏技术。我相信当你点击任何DetailView的标准按钮时会触发一个ItemCommand。因此,在这些事件中,你必须找出触发事件的按钮并采取必要的行动。

但是由于您的详细信息视图位于gridview编辑模板中,我建议您手动连接事件;将它们手动合并到您的标记中。

...您单击的更新位于DetailsView而不是gridview;所以请记住取消gridview的编辑模式并重新绑定gridview。

希望这有帮助!!!