0

我有以下 OnSave 表单事件的事件处理程序:

function saveEntityForm(executionContext) {
   executionContext.getFormContext().data.save().then();
}

当我单击表单上的保存按钮时,会弹出以下文本:

保存中

保存完成请稍候错误代码:0x83215603

我正在使用统一接口。

发生此问题的原因可能是什么以及如何解决?

4

2 回答 2

1

“保存完成时请稍候”仅当您在表单已保存时尝试保存时才会出现 - 表单不允许同时进行两次保存。这就是调用 setTimeout 有效的原因 - 它会延迟调用 save 并且到那时,原始保存将完成。

但是,请注意,这会影响性能,如果在慢速网络上,甚至可能无法正常工作,因为在 XXX 秒后可能无法完成保存表单!

如果此代码在 onsave 事件处理程序中执行,则应首先调用 preventDefault() 以停止发生默认保存,然后调用 executionContext.getFormContext().data.save() 将按预期工作(请参阅https:// docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/save-event-arguments/preventdefault

如果此代码在特定控件的 onchange 处理程序中执行,您可以尝试调用 isDefaultPrevented 或 getSaveMode 以确定是否正在保存表单,如果是,则调用 save() https://docs.microsoft.com/en-us /powerapps/developer/model-driven-apps/clientapi/reference/save-event-arguments/isdefaultprevented

于 2020-08-25T20:39:57.830 回答
0

我已经通过自己为我的自定义代码添加 setTimeout 而不是使用显式保存方法解决了这个问题,如下所示:

function saveEntityForm(executionContext) {
   // waiting few seconds to process the form
   setTimeout(() => {
      processForm(executionContext);
   }, 3000);
}
于 2019-12-19T05:57:48.547 回答