使用JavaScript获取CRM主题颜色

时间:2016-09-19 16:40:24

标签: javascript dynamics-crm crm

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

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

当我从主题获取的颜色发生变化时自动更改按钮颜色的目标,无需更改我的代码。

3 个答案:

答案 0 :(得分:2)

您可以使用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();

您还可以将WebAPI与以下URL一起使用:

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

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

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

pcarousel/pcarousel