簡體   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