我有以下 OnSave 表单事件的事件处理程序:
function saveEntityForm(executionContext) {
executionContext.getFormContext().data.save().then();
}
当我单击表单上的保存按钮时,会弹出以下文本:
保存中
保存完成请稍候错误代码:0x83215603
我正在使用统一接口。
发生此问题的原因可能是什么以及如何解决?
我有以下 OnSave 表单事件的事件处理程序:
function saveEntityForm(executionContext) {
executionContext.getFormContext().data.save().then();
}
当我单击表单上的保存按钮时,会弹出以下文本:
保存中
保存完成请稍候错误代码:0x83215603
我正在使用统一接口。
发生此问题的原因可能是什么以及如何解决?
“保存完成时请稍候”仅当您在表单已保存时尝试保存时才会出现 - 表单不允许同时进行两次保存。这就是调用 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
我已经通过自己为我的自定义代码添加 setTimeout 而不是使用显式保存方法解决了这个问题,如下所示:
function saveEntityForm(executionContext) {
// waiting few seconds to process the form
setTimeout(() => {
processForm(executionContext);
}, 3000);
}