自动保存可帮助应用用户专注于其工作,而不必管理如何在窗体中保存数据。 大多数人都喜欢在每次更新行时不必显式保存数据,但有些组织可能有一些自定义,专门设计用于要求显式保存。 对于这些组织,有一些选项用于管理如何应用自动保存。
自动保存工作原理
默认情况下,更新后的表和经典表的所有主窗体都已启用自动保存。 在创建(初始保存)行后,对窗体所做的任何更改都会在完成更改后 30 秒自动保存。 如果窗体中没有更改,则在打开窗体时不会发生自动保存。 在完成更改后,会重新计算自动保存开始前的 30 秒期间。 如果另外有人在您编辑行时更新了同一行,则在发生自动保存时,将会在窗体中检索和显示这些更改。
启用自动保存后,将仅在初次保存行时显示“保存”按钮。 创建行后,命令栏中的保存按钮不会显示,但可以看到右下角有一个
按钮,显示是否有任何未保存的更改。 此控件在禁用自动保存时也会显示。
可以选择此按钮以保存行,然后立即刷新窗体中的数据。 启用自动保存功能后,每当您离开一行或关闭显示一行的独立窗口时,行都会被保存。 对于未更新的表,不需要在窗体中显示保存并关闭按钮。
是否应禁用自动保存?
如果有插件、工作流或表单脚本需要在保存行时执行,它们会在每次发生自动保存时运行。 如果这些扩展设计时没有考虑到自动保存功能,那么这种模式可能会导致不良行为。 不管是否启用自动保存,插件、工作流和窗体脚本都应设计为查找特定更改,不应对每个保存事件都无差别地执行。
如果您为表配置了审核,则将每次保存视为单独的更新。 如果有人在有未保存更改的表单上停留超过 30 秒,那么只有在执行自动保存后添加更多数据时,才会观察到另一个条目。 如果您有依赖于审核数据的报告,并将每次保存视为单独的“触及”行,则可能会看到触及的频率增加。 如果使用此方法,都应该考虑无论是否启用自动保存,单个用户行为使其成为一个不可靠的指标。
为组织禁用自动保存
如果您确定自动保存导致您使用的扩展出现问题,Power Platform 管理员可以为环境禁用它。 没有用于为单个表或窗体禁用自动保存的设置。
- 登录 Power Platform 管理中心,进入管理>环境,然后打开所需的环境。
- 在命令栏中选择设置。
- 展开产品,然后选择行为。
- 在基本行为下,针对自动保存,选择关。
为窗体禁用自动保存
如果要为特定表窗体禁用自动保存,可向表中的 OnSave 事件添加代码。
备注
使用这种方法,表单的自动保存功能将被禁用,但选择右下角的
按钮后,数据仍会被保存。 如果您试图跳转表单或关闭已更改数据的表单,系统会提示您保存更改,然后才允许您跳转或关闭表单。
使用此处的程序会导致表单上的保存并关闭按钮不起作用,因为它调用了 preventDefault 2 上的 saveMode,这会引用保存并关闭。 您可以去掉 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 资源”窗口。
在查找行对话框中,您创建的新网络资源将被选中。 选择添加关闭该对话框。
配置
OnSave事件:在窗体属性窗口中的事件处理程序 分区,将事件 设置为OnSave 。
选择添加。
在处理程序属性窗口中,将库设置为在上一步中添加的 Web 资源。
在
preventAutoSave列中键入“”。 区分大小写。 不要包含引号。确保选中已启用。
选中将执行上下文作为第一个参数传递。
重要提示
如果不这样做,脚本将无法运行。
处理程序属性对话框应如下所示。 自定义前缀“new_”可能会基于为组织的默认发布者设置的自定义前缀而有差异。
选择确定以关闭处理程序属性对话框。
如果有
OnSave的任何其他事件的事件处理程序,请使用绿色箭头将此处理程序移到顶部。窗体属性应显示如下。 请注意,在此处显示的示例中,从解决方案中进行更新,因此发布者前缀 (dspin_) 与默认发布者 (new_) 提供的前缀不同。 这是因为解决方案使用了不同的发布商。
选择确定以关闭窗体属性对话。
选择保存并关闭以关闭窗体。
在解决方案资源管理器中,单击发布所有自定义项。
在将此脚本应用于 OnSave 事件之后,当用户使用此窗体编辑行时,窗体的右下角将显示未保存更改消息,就像未禁用自动保存时那样。 但在用户选择旁边的
按钮之前,此信息不会消失。