Xrm.Navigation.openForm在统一接口中不遵守要求

时间:2018-11-21 08:09:57

标签: javascript dynamics-crm dynamics-crm-365-v9 dynamics-crm-uci

我在以下帖子中一直在使用该技术:

Xrm.Navigation.openForm not honouring formid

在经典界面中表现出色。

我已将JavaScript更新为以下内容:

function OpenSpecificForm(primaryControl)
    {
        const FORMID = "A696976B-EA8A-42F3-B4DC-F35DC9204D58";                      

        var formContext       = primaryControl;
        var parameters        = { formid: FORMID };
        var entityFormOptions = {};
        entityFormOptions["entityName"] = "new_entity_name";

        var recordId = formContext.data.entity.getId();                    
        var recordName   = formContext.getAttribute("new_name").getValue();    

        if (recordId != null)   { parameters["new_targetentityfieldid"] = recordId; }
        if (recordName != null) { parameters["new_targetentityfieldname"] = recordName; }

        Xrm.Navigation.openForm(entityFormOptions, parameters);
    }

并按如下所示设置功能区工作台:

Crm Parameter

此代码可继续在经典UI中按预期运行,但在新的统一界面中似乎无法运行。实体表单打开,但是打开的是最后一个CRM记住的内容,而不是我在formId中指定的那个。

有人能在新用户界面中打开特定表单吗?

1 个答案:

答案 0 :(得分:0)

我可以看到您的代码有一些潜在的问题。

第一个与表单上下文的生成有关,因为实际上需要使用primaryControl对象的getFormContext方法(documentation似乎是错误的)获取表单上下文:

var formContext = primaryControl.getFormContext();

第二个参数是 formId 参数名,根据documenation应该使用大写字母I编写。这可能没问题,但是请记住{{ 3}}指出以下内容:

  

在客户端和服务器之间交换的所有成员名称是   考虑用于任何种类的匹配应视为   区分大小写。术语功能,方法和过程可以是   假定是可互换的。