【问题标题】:Update command not working in Dynamic Data Details view更新命令在动态数据详细信息视图中不起作用
【发布时间】:2009-08-11 16:24:10
【问题描述】:

我刚刚使用实体框架创建了一个非常基本的动态数据 Web 应用程序,当我单击 GridView 中的编辑命令以打开详细信息视图、编辑一些字段并单击 Update 链接时,没有任何反应。

我的问题是什么可能导致这个更新什么也不做,有什么诊断它的提示吗?

更多信息 EntityDataSource 似乎“隐藏”了异常。我发现更新或插入操作未完成的原因不止一个,但我不得不使用 SQL 跟踪并捕获正在发送的命令。手动运行该命令会给出一个快速且可见的 SQL 错误。为什么这不能进入我的 UI 是一个谜。

【问题讨论】:

  • 这个问题的“JUST IN”部分是否意味着您已经找到了问题的答案?
  • 不,我刚刚隔离了导致我提出问题的场景。
  • 您在问题中引用的代码可能会使问题更加混乱并偏离真正的问题。我不认为这与问题有关 - 但是您可以尝试收听 LinqDataSource 的更新事件。
  • 你说得对@Aaron,我已经更新了问题。
  • EDS 已记录以在处理其事件时隐藏异常(您可以在处理程序中覆盖它)。你或 DD 处理更新了吗?

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


【解决方案1】:

一般来说,每当您调试或开发动态数据网站时,都应该转到 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 对象设置为返回的 例外。如果您处理异常 在更新的事件处理程序中,设置 ExceptionHandled 属性为 true。 这可以防止异常 再次提出。当您指定一个值时 ExceptionHandled 的 false 属性,EntityDataSource 重新引发异常。

【讨论】:

    【解决方案2】:

    如果我尝试从 DetailsView 控件更新数据,我主要依赖于代码隐藏技术。我相信当您单击任何 DetailView 的标准按钮时都会触发 ItemCommand。因此,在这些事件中,您必须确定是哪个按钮触发了该事件并采取必要的措施。

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

    ...而且您单击的更新是在 DetailsView 而不是 gridview 上;所以记得取消gridview的编辑模式,重新绑定gridview。

    希望对你有帮助!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多