【问题标题】:Geting CRM theme color using JavaScript使用 JavaScript 获取 CRM 主题颜色
【发布时间】:2016-09-19 16:40:23
【问题描述】:

我正在使用我的 CRM 解决方案,包括一些 JS Web 资源,它应该在帐户实体上添加新按钮(它们被放置在表单正文中)。我还制作了一个新的 CRM 主题。

是否有任何 JavaScript 函数可以从该主题中获取颜色,以便我可以将它用于我的按钮?

目标是在我从主题中获得的颜色发生更改时自动更改按钮颜色,而无需更改我的代码。

【问题讨论】:

    标签: javascript dynamics-crm crm


    【解决方案1】:

    您可以使用CRM REST Builder 创建以下代码,该代码将返回默认(即正在使用)主题:

    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/themes?$filter=isdefaulttheme eq true", true);
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    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) {
                var results = JSON.parse(this.response);
                for (var i = 0; i < results.value.length; i++) {
                     var themeid = results.value[i]["themeid"];
                }
            }
            else {
                alert(this.statusText);
            }
        }
    };
    req.send();
    

    您还可以通过以下 URL 使用 WebAPI:

    http(s)://SERVER/ORG/api/data/v8.0/themes?$filter=isdefaulttheme eq true

    【讨论】:

    • 我已经在我的函数中实现了这段代码(简单的复制/粘贴),还导入了 CRM REST Builder 来提出我自己的请求,但我没有得到任何回应。还有什么事情要做吗?
    • 你是否包含了标题:'Accept':'Application/json'。如果您忘记了,则响应中没有数据。
    【解决方案2】:

    主题信息存储在后台一个名为“主题”的实体中。该实体包含不同 UI 元素的所有十六进制代码。您可以使用 SDK/JavaScript 查询此实体并获取有关特定元素的信息。

    使用 REST:http://contoso.com/api/data/v8.0/themes

    并读取十六进制代码:"controlborder":"#000000","controlshade":"#000000"

    【讨论】:

      【解决方案3】:

      谢谢大家的回答。它帮助我找到了解决这个问题的方法。

      与此同时,我已经建立了另一种使用 XRM Service Toolkit 从 Theme 获取颜色的方法(您必须安装 XRMServiceToolkit 才能使用此解决方案。Here 是如何执行此操作的说明。 它有效,我想与你分享它以防有人发现它有用。

      我还想声明我是 CRM 新手,所以如果有理由不使用此功能,或者有办法改进它,我将很高兴收到有关此功能的反馈。

      这是我制作的功能。我用它来检索全局链接颜色,但你可以得到任何你想要的颜色:

       function getColorFromTheme()
       {
          var color ;
      
          XrmServiceToolkit.Rest.RetrieveMultiple(
                      "ThemeSet",
                      "",
                      function (results) {
                          if (results.length >= 1)
                              for (var i = 0; i < results.length; i++) {
                                  if(results[i].IsDefaultTheme===true)
                                  color=results[i].GlobalLinkColor;
                              }
                      },
                      function (error) {
                          alert(error.message);
                      },
                      function onComplete() {
      
                      },
                      false
                  );
      
          return color; 
       };
      

      【讨论】:

        猜你喜欢
        • 2019-03-07
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 2019-02-19
        • 2012-11-19
        • 1970-01-01
        相关资源
        最近更新 更多