gpt4 book ai didi

javascript - CRM 2015 中自定义实体表单上的 OnSave 事件进入递归触发器

转载 作者:行者123 更新时间:2023-12-03 09:49:45 25 4
gpt4 key购买 nike

我在 crm 2015 本地组织上以自定义实体的形式注册了 onSave 事件,该事件似乎进入了递归调用。在我点击“保存”后,事件不断地调用它自己,直到我通过任务管理器杀死 IE 或 IE 因内存堆栈已满而崩溃。我已经检查过,它似乎与我在函数中的内容无关,这意味着我不会再次以任何方式触发保存事件。

函数代码如下:

function contract_OnSave(context) {

var eventArgs = context.getEventArgs();
if (eventArgs.getSaveMode() == 1) {

if (Xrm.Page.getAttribute("new_field").getValue() != null) {
var mort = Xrm.Page.getAttribute("new_field").getValue();

if (mort == true) {


Xrm.Utility.confirmDialog("Would you like to open a new window for a Case?",
saveFormOnOpenCase,
callback)
}
}
}
}
function saveFormOnOpenCase()
{
Xrm.Page.data.save();
var parameters = {};
parameters["new_subjectnew"] = 100000002;
// Open the window.
var windowOptions = {
openInNewWindow: true
};
Xrm.Utility.openEntityForm("incident", null, parameters, windowOptions);
}
function callback() {

}

在我看来,这是CRM 2015中的一个错误,之后我检查了CRM的版本,发现它是RTM版本。我建议将 CRM 升级到更新 1,这似乎是最合乎逻辑的步骤。但即使升级后,问题仍然存在。

我尝试在字段上的 OnChange 事件上注册相同的函数,它工作正常,除了 openEntityForm 函数的 openInNewWindow 选项,它不会打开新窗口,但这是一个不同的问题。

我使用的是 IE 11。

有人可以确认这种情况是否也发生在另一个 CRM 2015 环境中,或者我是否遗漏了某些内容?

最佳答案

在 OnSave 事件中,您要求用户确认:

Xrm.Utility.confirmDialog("Would you like to open a new window for a Case?",
saveFormOnOpenCase,
callback)

当用户选择“确定”时,此对话框将执行函数saveFormOnOpenCase。该函数执行的第一条指令是:

Xrm.Page.data.save();

...再次触发保存事件。

关于javascript - CRM 2015 中自定义实体表单上的 OnSave 事件进入递归触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com