Dynamics CRM - 在Form Scripting中处理onLoad vs OnSave事件

时间:2016-08-05 19:38:09

标签: javascript forms scripting crm microsoft-dynamics

我为自定义实体创建了一些代码,涉及动态显示的问题以及回答它们的能力。我正致力于展示以前回答的问题,以及更新答案的能力。为此,我有一些函数触发我的自定义实体表单的负载,另一个触发onSave。

我的麻烦是每次发生保存时我的onLoad代码都会运行,有效地删除了onSave代码的输出。我只希望我的onLoad代码在第一次加载表单时运行。否则,我要触发onSave的代码应该处理其他所有内容。

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

关于如何解决这个问题的任何想法?我可以预见像getFormType()这样有用的东西,但我对如何处理事情感到有点失落。谢谢!

1 个答案:

答案 0 :(得分:1)

将一个onChange事件处理程序添加到modifiedon属性,该值只有在保存记录后才会更改,您可以拥有一个全局参数并设置其值并使用其值来阻止onLoad再次重新触发。 / p>

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;
}