命令栏菜单消失的CRM

时间:2017-03-03 14:37:30

标签: javascript dynamics-crm dynamics-crm-2013

我在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”被称为多次,但其内容只执行一次,命令栏显示正确...但实际上我不知道为什么当多次执行此方法时,命令栏会被隐藏

1 个答案:

答案 0 :(得分:0)

在我看来,就像你试图在保存后刷新页面一样。

而不是尝试重新打开表单,我认为强制刷新可能更正确:

Xrm.Page.data.refresh(true);

我认为您在OnCreate()事件上注册事件的代码可能会导致错误。保存后功能区会自动刷新(因此任何可见性/启用条件或javascript都可以重新测试。

页面上的JavaScript错误可能会导致JavaScript重新呈现功能区失败。