我在 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 最新版本于 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”方法被多次调用,但其内容仅执行一次,并且命令栏显示正确...但我真的不明白为什么当多次执行此方法时,命令栏会被隐藏.
最佳答案
在我看来,您似乎在保存后尝试刷新页面。
我认为强制刷新可能更正确,而不是尝试重新打开表单:
Xrm.Page.data.refresh(true);
我认为您在 OnCreate() 事件上注册事件的代码可能会导致错误。保存后功能区会自动刷新(因此可以重新测试任何可见性/启用条件或 JavaScript。
页面上的 JavaScript 错误可能会导致 JavaScript 重新呈现功能区失败。
关于javascript - 命令栏菜单消失 CRM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581649/