【发布时间】:2017-03-03 14:37:30
【问题描述】:
我在 CRM 中遇到问题,错误是当我创建约会并尝试保存它时,命令栏在加载创建的约会记录后变得不可见。我尝试检查 javascript 相关代码,但没有提示问题的根源,我应该说刷新创建页面的页面后,命令栏变得可见。
OnSave: function (e) {
EOZ.Appointment.SetPivotalId();
var eventArgs = e.getEventArgs();
if (Xrm.Page.ui.getFormType() == 1 && eventArgs.getSaveMode() == 1 && !saveAndClose) {
Xrm.Page.getAttribute("createdon").addOnChange(EOZ.Appointment.CreatedOnChanged);
}
else {
saveAndClose = true;
Xrm.Page.getAttribute("createdon").removeOnChange(EOZ.Appointment.CreatedOnChanged);
}
},
CreatedOnChanged : function () {
var id = Xrm.Page.data.entity.getId();
setTimeout(function () {
Xrm.Utility.openEntityForm("appointment", id);
}, 500);
}
注意:经过大量 javascript 调试后,我注意到该问题仅在多次调用“CreatedOnChanged”方法时发生,另一方面,如果仅在命令栏可见时调用它。我不知道它是否是错误的来源,但它是代码行为的唯一区别。
编辑: Dynamics CRM 2013,浏览器:Google chrome 最新版本于 2017 年 3 月 3 日 我将代码修改为:
CreatedOnChanged : function () {
if(!isCalled){
var id = Xrm.Page.data.entity.getId();
setTimeout(function () {
Xrm.Utility.openEntityForm("appointment", id);
}, 500);
isCalled = true;
}
}
方法“CreatedOnChanged”被多次调用,但其内容只执行一次,命令栏显示正确......但我真的不明白为什么当多次执行此方法时,命令栏会隐藏.
【问题讨论】:
-
Dynamics CRM 版本?浏览器版本?当您禁用表单上的所有自定义脚本时会发生什么?顺便提一句。
else块中的代码在更新表单和保存模式时执行!= 1。这是你想要的吗? -
致@HenkvanBoeijen,我编辑了我的问题,当我按下“保存并关闭”按钮时执行else代码,如果我禁用所有自定义脚本,则命令栏在创建后正确显示约会活动
-
你真正想要达到什么目的?我认为看到针对 CreatedOn 字段注册的 onchanged 处理程序是很不寻常的。
-
对@Malachy 我添加了 onchanged 事件来解决微软的错误,它仅用于重新加载创建的实体
-
您能否就您要解决的 Microsoft 错误提供更多见解?
标签: javascript dynamics-crm dynamics-crm-2013