Javascript 命令栏菜单

Javascript 命令栏菜单,javascript,dynamics-crm,dynamics-crm-2013,Javascript,Dynamics Crm,Dynamics Crm 2013,我在CRM中遇到了一个问题,错误是当我创建约会并试图保存它时,commandBar在加载创建的约会记录后不可见。我试图检查与javascript相关的代码,但没有关于问题来源的提示,我应该说,在刷新所创建页面的页面后,命令栏变为可见 OnSave: function (e) { EOZ.Appointment.SetPivotalId(); var eventArgs = e.getEventArgs(); if (Xrm.Page.ui.getFormType()

我在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最新版本,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”被多次调用,但其内容只执行一次,并且命令栏显示正确。。。但是我真的不知道为什么当这个方法被多次执行时,命令栏会被隐藏。

在我看来,你好像在试图在保存后刷新页面

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

Xrm.Page.data.refresh(true);
我认为在OnCreate()事件上注册事件可能会导致错误。保存后功能区会自动刷新(因此可以重新测试任何可见性/启用条件或javascript)


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

在我看来,您在保存后试图刷新页面

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

Xrm.Page.data.refresh(true);
我认为在OnCreate()事件上注册事件可能会导致错误。保存后功能区会自动刷新(因此可以重新测试任何可见性/启用条件或javascript)


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

Dynamics CRM版本?浏览器版本?当您禁用表单上的所有自定义脚本时会发生什么?B.t.w.
else
块中的代码在更新表单时执行,并且在保存模式下!=1。这是您想要的吗?要@HenkvanBoeijen,我编辑了我的问题,else代码在我按下“保存和关闭”按钮时执行,如果我禁用了所有自定义脚本,那么在创建约会活动后,命令栏会正确显示。您实际想要实现什么?我认为看到一个针对CreatedOn fiel注册的onchanged处理程序是非常罕见的d、 在@Malachy中,我添加了onchanged事件来解决microsoft的错误,它只用于重新加载创建的实体。您可以提供有关您试图解决的microsoft错误的更多信息?Dynamics CRM版本?浏览器版本?当您禁用表单上的所有自定义脚本时会发生什么?B.t.w.
else
块中的代码会变为execute on update form and when save mode!=1。这是您想要的吗?为了@HenkvanBoeijen,我编辑了我的问题,当我按下“保存并关闭”按钮时,执行else代码,如果我禁用所有自定义脚本,在创建约会活动后,命令栏将正确显示。您实际想实现什么?我想在CreatedOn字段中注册onchanged处理程序是非常罕见的。在@Malachy中,我添加了onchanged事件来解决microsoft的错误,它只用于重新加载创建的实体。您是否可以提供有关您试图解决的microsoft错误的更多信息?