在模型驱动应用中禁用自动保存
自动保存可帮助应用用户专注于其工作,而不必管理如何在窗体中保存数据。 大多数人都喜欢在每次更新行时不必显式保存数据,但有些组织可能有一些自定义,专门设计用于要求显式保存。 对于这些组织,有一些选项用于管理如何应用自动保存。
自动保存工作原理
默认情况下,更新后的表和经典表的所有主窗体都已启用自动保存。 在创建(初始保存)行后,对窗体所做的任何更改都会在完成更改后 30 秒自动保存。 如果窗体中没有更改,则在打开窗体时不会发生自动保存。 在完成更改后,会重新计算自动保存开始前的 30 秒期间。 如果另外有人在您编辑行时更新了同一行,则在发生自动保存时,将会在窗体中检索和显示这些更改。
启用自动保存后,将仅在初次保存行时显示“保存”按钮。 创建行之后,命令栏上的保存按钮会不显示,但会在右下角看到 按钮,它会在没有任何未保存的更改时显示。 此控件在禁用自动保存时也会显示。
可以选择此按钮以保存行,然后立即刷新窗体中的数据。 启用自动保存后,每当您离开行或关闭显示行的单独窗口,行都会保存。 对于未更新的表,不需要在窗体中显示保存并关闭按钮。
是否应禁用自动保存?
如果您有在保存行时执行的插件、工作流或窗体脚本,它们将在每次自动保存发生时运行。 如果这些扩展未设计为与自动保存一起工作,则可能导致不必要的行为。 不管是否启用自动保存,插件、工作流和窗体脚本都应设计为查找特定更改,不应对每个保存事件都无差别地执行。
如果您为表配置了审核,则将每次保存视为单独的更新。 如果有人在有未保存更改的窗体上逗留超过 30 秒,则当他们在执行自动保存后添加更多数据时,您将看到一条额外的输入。 如果您有依赖于审核数据的报告,并将每次保存视为单独的“触及”行,则可能会看到触及的频率增加。 如果使用此方法,都应该考虑无论是否启用自动保存,单个用户行为使其成为一个不可靠的指标。
为组织禁用自动保存
如果您确定自动保存导致您使用的扩展出现问题,Power Platform 管理员可以为环境禁用它。 没有用于为单个表或窗体禁用自动保存的设置。
- 登录到 Power Platform 管理中心,转到环境,然后打开所需的环境。
- 在命令栏中选择设置。
- 展开产品,然后选择行为。
- 在基本行为下,针对自动保存,选择关。
为窗体禁用自动保存
如果要为特定表窗体禁用自动保存,可向表中的 OnSave
事件添加代码。
备注
通过使用此方法,为窗体禁用自动保存,但您选择右下角的 按钮时,仍将保存数据。 如果您尝试离开或关闭数据已更改的窗体,您将收到一个保存更改的提示,然后才能离开或关闭窗体。
使用以下过程会导致窗体上的保存并关闭按钮不起作用,因为它调用 saveMode
2 上的 preventDefault
,这会引用保存并关闭。 您可以清除下面的 getSaveMode() == 2
复选框以避免这种情况,但是当您尝试离开或关闭数据已更改的窗体时,窗体会自动保存。 出于此原因,保存并继续按钮也不起作用。
登录到 Power Apps。
在左侧导航窗格上,选择表,选择所需表,然后选择窗体区域。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
您还可以在解决方案中对表进行调整。 要进行此操作,在左侧窗格中选择解决方案,选择表,然后选择窗体区域。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
打开要编辑的窗体。
选择切换到经典在经典窗体设计器中编辑窗体。
创建 JavaScript Web 资源并将其添加到窗体:
在窗体编辑器中的窗体 组下,选择窗体属性。
在事件选项卡上的窗体库下,选择添加。
在查找行对话框中,选择新建。
在 Web 资源窗体中,输入以下信息:
称谓 参考 Name preventAutoSave 显示名称 阻止自动保存 类型 脚本(JScript) 在类型列旁边,选择文本编辑器。
在源列中,粘贴以下代码:
function preventAutoSave(econtext) { var eventArgs = econtext.getEventArgs(); if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) { eventArgs.preventDefault(); } }
选择确定关闭文本编辑器。
选择保存以保存 Web 资源,然后关闭“Web 资源”窗口。
在查找行对话框中,您创建的新 Web 资源将处于选中状态。 选择添加关闭该对话框。
配置
OnSave
事件:在窗体属性窗口中的事件处理程序 分区,将事件 设置为OnSave 。
选择添加。
在处理程序属性窗口中,将库设置为在上一步中添加的 Web 资源。
在函数列中键入“
preventAutoSave
”。 区分大小写。 不要包含引号。确保选中已启用。
选中将执行上下文作为第一个参数传递。
重要
如果您不这么做,脚本将无法运行。
处理程序属性对话框应如下所示。 自定义前缀“new_”可能会基于为组织的默认发布者设置的自定义前缀而有差异。
选择确定以关闭处理程序属性对话框。
如果有
OnSave
的任何其他事件的事件处理程序,请使用绿色箭头将此处理程序移到顶部。窗体属性应显示如下。 请注意,在此处显示的示例中,从解决方案中进行更新,因此发布者前缀 (dspin_) 与默认发布者 (new_) 提供的前缀不同。 这是因为解决方案使用了不同的发布商。
选择确定以关闭窗体属性对话。
选择保存并关闭以关闭窗体。
在解决方案资源管理器中,单击发布所有自定义项。
在将此脚本应用于 OnSave
事件之后,当用户使用此窗体编辑行时,窗体的右下角将显示未保存更改消息,就像未禁用自动保存时那样。 但此消息不会消失,直到用户选择 。 按钮之前,此消息不会消失。