在模型驱动应用中禁用自动保存

自动保存可帮助应用用户专注于其工作,而不必管理如何在窗体中保存数据。 大多数人都喜欢在每次更新行时不必显式保存数据,但有些组织可能有一些自定义,专门设计用于要求显式保存。 对于这些组织,有一些选项用于管理如何应用自动保存。

自动保存工作原理

默认情况下,更新后的表和经典表的所有主窗体都已启用自动保存。 在创建(初始保存)行后,对窗体所做的任何更改都会在完成更改后 30 秒自动保存。 如果窗体中没有更改,则在打开窗体时不会发生自动保存。 在完成更改后,会重新计算自动保存开始前的 30 秒期间。 如果另外有人在您编辑行时更新了同一行,则在发生自动保存时,将会在窗体中检索和显示这些更改。

启用自动保存后,将仅在初次保存行时显示“保存”按钮。 创建行之后,命令栏上的保存按钮会不显示,但会在右下角看到 自动保存按钮。 按钮,它会在没有任何未保存的更改时显示。 此控件在禁用自动保存时也会显示。

可以选择此按钮以保存行,然后立即刷新窗体中的数据。 启用自动保存后,每当您离开行或关闭显示行的单独窗口,行都会保存。 对于未更新的表,不需要在窗体中显示保存并关闭按钮。

是否应禁用自动保存?

如果您有在保存行时执行的插件、工作流或窗体脚本,它们将在每次自动保存发生时运行。 如果这些扩展未设计为与自动保存一起工作,则可能导致不必要的行为。 不管是否启用自动保存,插件、工作流和窗体脚本都应设计为查找特定更改,不应对每个保存事件都无差别地执行。

如果您为表配置了审核,则将每次保存视为单独的更新。 如果有人在有未保存更改的窗体上逗留超过 30 秒,则当他们在执行自动保存后添加更多数据时,您将看到一条额外的输入。 如果您有依赖于审核数据的报告,并将每次保存视为单独的“触及”行,则可能会看到触及的频率增加。 如果使用此方法,都应该考虑无论是否启用自动保存,单个用户行为使其成为一个不可靠的指标。

为组织禁用自动保存

如果您确定自动保存导致您使用的扩展出现问题,Power Platform 管理员可以为环境禁用它。 没有用于为单个表或窗体禁用自动保存的设置。

  1. 登录到 Power Platform 管理中心,转到环境,然后打开所需的环境。
  2. 在命令栏中选择设置
  3. 展开产品,然后选择行为
  4. 基本行为下,针对自动保存,选择

为窗体禁用自动保存

如果要为特定表窗体禁用自动保存,可向表中的 OnSave 事件添加代码。

备注

通过使用此方法,为窗体禁用自动保存,但您选择右下角的 自动保存按钮 按钮时,仍将保存数据。 如果您尝试离开或关闭数据已更改的窗体,您将收到一个保存更改的提示,然后才能离开或关闭窗体。

使用以下过程会导致窗体上的保存并关闭按钮不起作用,因为它调用 saveMode 2 上的 preventDefault,这会引用保存并关闭。 您可以清除下面的 getSaveMode() == 2 复选框以避免这种情况,但是当您尝试离开或关闭数据已更改的窗体时,窗体会自动保存。 出于此原因,保存并继续按钮也不起作用。

  1. 登录到 Power Apps

  2. 在左侧导航窗格上,选择,选择所需表,然后选择窗体区域。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。

    您还可以在解决方案中对表进行调整。 要进行此操作,在左侧窗格中选择解决方案,选择表,然后选择窗体区域。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。

  3. 打开要编辑的窗体。

  4. 选择切换到经典在经典窗体设计器中编辑窗体。

  5. 创建 JavaScript Web 资源并将其添加到窗体:

    1. 在窗体编辑器中的窗体 组下,选择窗体属性

    2. 事件选项卡上的窗体库下,选择添加

    3. 查找行对话框中,选择新建

    4. 在 Web 资源窗体中,输入以下信息:

      称谓 参考
      Name preventAutoSave
      显示名称 阻止自动保存
      类型 脚本(JScript)
    5. 类型列旁边,选择文本编辑器

    6. 列中,粘贴以下代码:

      function preventAutoSave(econtext) {  
          var eventArgs = econtext.getEventArgs();  
          if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) {  
              eventArgs.preventDefault();  
          }  
      }  
      
      
    7. 选择确定关闭文本编辑器。

    8. 选择保存以保存 Web 资源,然后关闭“Web 资源”窗口。

    9. 查找行对话框中,您创建的新 Web 资源将处于选中状态。 选择添加关闭该对话框。

  6. 配置 OnSave 事件:

    1. 窗体属性窗口中的事件处理程序 分区,将事件 设置为OnSave

    2. 选择添加

    3. 处理程序属性窗口中,将设置为在上一步中添加的 Web 资源。

    4. 函数列中键入“preventAutoSave”。 区分大小写。 不要包含引号。

    5. 确保选中已启用

    6. 选中将执行上下文作为第一个参数传递

      重要

      如果您不这么做,脚本将无法运行。

      处理程序属性对话框应如下所示。 自定义前缀“new_”可能会基于为组织的默认发布者设置的自定义前缀而有差异。

      用于防止 Dynamics 365 中自动保存的 OnSave 事件处理程序。

    7. 选择确定以关闭处理程序属性对话框。

    8. 如果有 OnSave 的任何其他事件的事件处理程序,请使用绿色箭头将此处理程序移到顶部。

      窗体属性应显示如下。 请注意,在此处显示的示例中,从解决方案中进行更新,因此发布者前缀 (dspin_) 与默认发布者 (new_) 提供的前缀不同。 这是因为解决方案使用了不同的发布商

    高级设置

  7. 选择确定以关闭窗体属性对话。

  8. 选择保存并关闭以关闭窗体。

  9. 在解决方案资源管理器中,单击发布所有自定义项

在将此脚本应用于 OnSave 事件之后,当用户使用此窗体编辑行时,窗体的右下角将显示未保存更改消息,就像未禁用自动保存时那样。 但此消息不会消失,直到用户选择 自动保存按钮。 按钮之前,此消息不会消失。

后续步骤

创建和设计窗体

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。