【问题标题】:How to set multi-select field value using openForm in Dynamics CRM?如何在 Dynamics CRM 中使用 openForm 设置多选字段值?
【发布时间】:2020-03-03 20:52:43
【问题描述】:

我在 Dynamics CRM on-premises 中为联系人和项目创建了多选选项集字段(类别)。现在使用按钮单击我正在尝试在项目上设置多选字段的值。但是每次我遇到错误时:

Error converting value 920650008 to type System.Collections.Generic.List 1[System.Int32]

由于多选选项集字段是全局的,因此没有指定值可用或不可用的机会。

这是我之前尝试过的:

var name = formContext.getAttribute(new.account_metada.CompanyName).getValue();
var entityFormOptions["entityName"] = "new_projects";
    entityFormOptions["openInNewWindow"] = true;
var formParameters["new_company"] = id; 
    formParameters["new_companyname"] = name;
    formParameters["new_category"]  = formContext.getAttribute("new_category").getValue()

    Xrm.Navigation.openForm(entityFormOptions, formParameters).then(
                function (success) {
                    console.log(success);
                },
                function (error) {
                    console.log(error);
                });

请告诉我如何使用Xrm.Navigation.openForm 设置多选选项集的值

【问题讨论】:

  • var multiSelectOptionSet = formContext.getAttribute("new_category").getValue(); 调试并检查multiSelectOptionSet 是否返回数组。如果是这样,那么formParameters["new_category"] = multiSelectOptionSet 这会有所帮助。此外,为了测试,您可以传递 Multiselect 的硬编码数组值以检查是否一切正常。

标签: javascript dynamics-crm multi-select xrm picklist


【解决方案1】:

我亲自对此进行了测试,并与下面的 sn-p 得到了相同的错误结果。虽然the syntax is right - Xrm.Navigation.openForm() 方法可能有问题,或者这可能是由于unsupported Array datatype 而导致的预期行为。

var entityFormOptions = new Array();
entityFormOptions["entityName"] = "my_entity";
entityFormOptions["openInNewWindow"] = false;

var formParameters = new Array();
formParameters["new_multiselectpicklist"]  = formContext.getAttribute("new_multiselectpicklist").getValue();

Xrm.Navigation.openForm(entityFormOptions, formParameters).then(
                function (success) {
                    console.log(success);
                },
                function (error) {
                    console.log(error);
                });

即使是硬代码分配也会出现同样的错误:

formParameters["new_multiselectpicklist"]  = [962080001, 962080002];

编辑

上面的行应该是这样才能使它工作。

formParameters["new_multiselectpicklist"]  = "[962080001, 962080002]";

我用extraqs 尝试了this alternate option,它成功了。

https://mycrmdev.crm.dynamics.com/main.aspx?etn=my_entity&pagetype=entityrecord&extraqs=new_multiselectpicklist=[962080001, 962080002]

【讨论】:

  • @MohsinA。有趣的是,当我硬编码它周围的方括号时它失败了。
【解决方案2】:

我通过替换下面的源代码行解决了这个问题:

现有

formParameters["new_multiselectpicklist"] = formContext.getAttribute("new_multiselectpicklist").getValue();

更新

formParameters["new_multiselectpicklist"] = "["+formContext.getAttribute("new_multiselectpicklist").getValue()+"]";

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多