代码之家  ›  专栏  ›  技术社区  ›  Damkulul

如何在crm中获取optionset标签

  •  1
  • Damkulul  · 技术社区  · 8 年前

    我正在使用D-CRM 2016我正在尝试在客户端(js)中获取optionset的标签,我收到一个错误,找不到原因:

    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)
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Daryl    8 年前

    每当你试图打客户端rest电话时,我总是推荐Jason Lattimer的CRM rest Builder( https://github.com/jlattimer/CRMRESTBuilder )您可以使用“格式化值”选项访问文本标签。

        2
  •  0
  •   Nick    8 年前

    主要问题是您使用的SDK。我真的不能帮你调试。

    但是,这里有一个工作示例,它将返回标签和值。您可以添加一个头(Prefer)来告诉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;
        };