我在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);
}
nb:经过大量的JavaScript调试后,我注意到只有在"创建构成"的方法被称为" createNchanged"的方法时,就会发生不止一次,另一方面,如果只有一旦可见命令栏,就会称呼它。我不知道这是否是错误的来源,但这是代码行为中的唯一区别。
编辑: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;
}
}
方法"创建构成"被称为数次,但其内容仅执行一次,并且命令栏正确显示...但是我实际上不是为什么当多次执行此方法时,命令栏会隐藏。
它看起来像您试图在保存之后刷新页面。
而不是试图重新打开形式,我认为强迫刷新可能更正确:
Xrm.Page.data.refresh(true);
我认为您围绕在onCreate()事件上注册该事件的代码可能会导致错误。丝带保存后会自动刷新(因此可以重新测试任何可见性/启用条件或JavaScript。
页面上的JavaScript错误可能会导致JavaScript重新呈现功能区失败。