Dynamics CRM 2016 - Xrm.page.ui.control-> addOption() - 无法添加OptionSet中未定义的选项

时间:2016-02-15 10:46:37

标签: dynamics-crm xrm dynamics-crm-2016

我目前正在开发一个升级项目Dynamics 2011-> 2016,对于下面这段代码,似乎在Dynamics 2016中,如果该值尚未在选项集中定义,则addOption()函数不起作用。使用下面的代码会将值添加到选项集,但无法选择该选项!有没有办法解决这个问题而无需在字段的选项集中静态添加选项?

PopulateCaseTemplateRecords = function () {
    //Fetch case template records
    var fetchXml = 
    "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" 
        + "<entity name='new_casetemplate'>" 
            + "<attribute name='new_name' />" 
            + "<filter type='and'>" 
                + "<condition attribute='statecode' operator='eq' value='0' />" 
                + "<condition attribute='ownerid' operator='eq-userteams' />" 
            + "</filter>" 
        + "</entity>" 
    + "</fetch>";

    //retrieve case templates using asynch call to webapi v8.0
    return WebAPI.Proxy.Fetch("new_casetemplates", fetchXml).then(function (retrievedCaseTemplate) {
        if (retrievedCaseTemplate) {
            if (retrievedCaseTemplate.length >= 1) {
                Xrm.Page.getControl("new_case_template").clearOptions();

                //Populate the Case template option set on Case
                for (var i = 0; i < retrievedCaseTemplate.length; i++) {
                    var option = new Option();
                    option.text = retrievedCaseTemplate[i].new_name;
                    option.value = i;
                    //Add the new option, Does not work in Dynamics 2016 if option not defined in optionset!
                    Xrm.Page.getControl("new_case_template").addOption(option); 
                }
            }
        }
    });
}

1 个答案:

答案 0 :(得分:1)

添加无法保存的选项没有意义。根据MSDN:

  

此方法不会检查您添加的选项中的值是否为   有效。 如果添加无效选项,则无法正常使用。您   必须只添加为特定选项定义的选项   设置控件绑定的属性。使用该属性   getOptions或getOption方法来获取要添加的有效选项对象   使用这种方法。

您可以在文本字段中使用CRM 2016新功能自动完成:https://msdn.microsoft.com/en-us/library/mt607648.aspx

或者,如果您不想保存该值,则可以使用带有html <SELECT>元素的小iframe与CRM表单进行交互。