我在CRM中遇到一个问题,错误是当我创建一个约会并尝试保存它时,commandBar在加载创建的约会记录后变得不可见。我尝试检查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”时,另一方面只有在命令栏可见时才调用它。我不知道它是否是bug的来源,但它是代码行为的唯一区别。
修改: Dynamics CRM 2013,浏览器:Google Chrome最新版本于03/03/2017 我将我的代码修改为:
CreatedOnChanged : function () {
if(!isCalled){
var id = Xrm.Page.data.entity.getId();
setTimeout(function () {
Xrm.Utility.openEntityForm("appointment", id);
}, 500);
isCalled = true;
}
}
方法“CreatedOnChanged”被称为多次,但其内容只执行一次,命令栏显示正确...但实际上我不知道为什么当多次执行此方法时,命令栏会被隐藏
答案 0 :(得分:0)
在我看来,就像你试图在保存后刷新页面一样。
而不是尝试重新打开表单,我认为强制刷新可能更正确:
Xrm.Page.data.refresh(true);
我认为您在OnCreate()事件上注册事件的代码可能会导致错误。保存后功能区会自动刷新(因此任何可见性/启用条件或javascript都可以重新测试。
页面上的JavaScript错误可能会导致JavaScript重新呈现功能区失败。