繁体   English   中英

在 Dynamics CRM 统一接口 OnSave 事件不起作用

[英]In Dynamics CRM Unified Interface OnSave Event Doesn't Work

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

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

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

正在保存

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

我正在使用统一接口。

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

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

function saveEntityForm(executionContext) {
   // waiting few seconds to process the form
   setTimeout(() => {
      processForm(executionContext);
   }, 3000);
}

“保存完成时请稍候”仅当您在表单已经保存时尝试保存时才会出现 - 表单不允许同时进行两次保存。 这就是调用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM