【问题标题】:how to get label of optionset in crm如何在crm中获取选项集的标签
【发布时间】:2026-02-16 06:45:01
【问题描述】:

我正在使用 D-CRM 2016 我试图在客户端 (js) 中获取选项集的标签,但出现错误并且找不到原因: 这是我的代码:

SDK.Metadata.RetrieveAttribute("myEntity", "myFieldName", null, false,
                function (result) {
                alert(result);
                for (var i = 0; i < result.OptionSet.Options.length; i++) {
                var loopText = result.OptionSet.Options[i].Label.LocalizedLabels[0].Label;
                var loopValue = result.OptionSet.Options[i].Value;

            }
   },
function (error) { }
,false);

我的错误:

Uncaught TypeError: _Context(...).getServerUrl is not a function
    at _getUrl (/SDev/%7B636656731400000359%7D/WebResources/xnes_SDK.MetaData?ver=1561501807:451)
    at Object.RetrieveAttribute (/SDev/%7B636656731400000359%7D/WebResources/xnes_SDK.MetaData?ver=1561501807:323)
    at <anonymous>:1:14
    at Mscrm.CommandHandler.$Ce_1 (JsProvider.ashx:8)
    at Mscrm.CommandHandler.$Ag_1 (JsProvider.ashx:8)
    at Mscrm.CommandHandler.handleCommand (JsProvider.ashx:8)
    at Mscrm.CommandBarData.executeCommand (JsProvider.ashx:8)
    at Mscrm.ButtonControl.executeCommand (ribbon.js:1)
    at Mscrm.ButtonControl.click (ribbon.js:1)
    at Mscrm.CommandBar.onClickHandler (ribbon.js:1)

【问题讨论】:

  • 您是否尝试调试,错误清楚地表明自定义库中的方法名称。 _Context 在以前的方法中由于某种原因失败,因此 _getUrl 抛出错误.. 调试更多..

标签: dynamics-crm metadata dynamics-crm-2016


【解决方案1】:

每当您尝试进行客户端休息呼叫时,我总是推荐 Jason Lattimer 的 CRM Rest Builder (https://github.com/jlattimer/CRMRESTBuilder) 您可以使用“格式化值”选项访问文本标签。

【讨论】:

    【解决方案2】:

    主要问题在于您使用的 SDK。我无法真正为您调试它。

    但是,这是一个返回标签和值的工作示例。您可以添加一个标头(首选)来告诉 api 也返回标签:

    var odataEndPoint = Xrm.Page.context.getClientUrl() + '/api/data/v8.2/';
    
    function GetDomainName(entityId) {
            var result = null;
    
            var req = new XMLHttpRequest();
            req.open("GET", odataEndPoint + 'systemusers(' + TrimGuid(entityId) + ')/', false);
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
            req.onreadystatechange = function () {
                if (this.readyState == 4) {
                    req.onreadystatechange = null;
                    if (this.status == 200) {
                        if (this.response) {
                            result = JSON.parse(this.response);
                        }
                    }
                    else {
                        var parsed = JSON.parse(this.response);
                        console.error(parsed.error.message)
                    }
                }
            };
    
            req.send();
            return result;
        };
    

    【讨论】: