Dynamics CRM -- 在表单脚本中处理 onLoad 和 OnSave 事件

Dynamics CRM -- Handling onLoad vs OnSave events in Form Scripting

我为自定义实体创建了一些代码,涉及动态显示的问题和回答问题的能力。我正在努力能够显示以前回答的问题,以及更新答案的能力。为此,我让某些函数触发我的自定义实体窗体的 onLoad,并触发另一个函数 onSave。

我的麻烦是每次保存时我的 onLoad 代码 运行s,有效地擦除 onSave 代码的输出。我只希望我的 onLoad 代码在第一次加载表单时为 运行。否则,我想要触发 onSave 的代码应该处理其他所有事情。

我尝试解决此问题的一种方法是使用 Xrm.Page.ui.getFormType(); 此 return 的值为 1 或 2,其中 1 对应于正在创建的记录,2 对应于正在更新的记录。这适用于一种情况——当为自定义实体创建新记录时,我不希望我的 onLoad 代码 运行,getFormType() 解决了这个问题。但是当我保存记录时,return 值发生了变化,导致我的 onLoad 代码变为 运行 OnSave,这让事情变得一团糟。

关于我将如何解决这个问题的任何想法?我可以预见 getFormType() 之类的东西很有用,但我对如何处理事情有点不知所措。谢谢!

向 modifiedon 属性添加一个 onChange 事件处理程序,该值只会在记录保存后发生变化,您可以拥有一个全局参数并设置其值并使用其值来阻止 onLoad 再次触发.

var canRunOnLoadCode = true;

//form onLoad function
function onLoad() {
 if(!canRunOnLoadCode) return;
//on load code below
}

//register the below function on change of modified on
function afterOnSave(){
 canRunOnLoadCode = false;
}