javascript - 命令栏菜单消失 CRM

标签 javascript dynamics-crm dynamics-crm-2013

我在 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/

相关文章:

c# - 在 LINQ 的 where 子句中使用 .NET 字符串函数

python - 从 Python 连接到 Microsoft Dynamics CRM 2011 SDK

dynamics-crm-2011 - 我可以限制我的 CRM 工作流程由某些用户执行吗

dynamics-crm - MSCRM 2013 中的复合字段

c# - 如何调试自定义工作流事件

javascript - CSS 中的统计圈

javascript - IE8 DOM 转换 XML 并从 jQuery find() 或 filter() 返回任何内容

给定索引后特殊字符的Javascript索引

javascript - 如何使用 JS、HTML、PHP 制作动态 "Add Dataset"功能?

javascript - 禁用 View 选择器 DIV 在 MS CRM 中不可访问