2016-09-19 81 views
0

我正在使用我的CRM解決方案,其中包含一些JS Web資源,它應該在帳戶實體上添加新按鈕(它們放置在表單主體中)。我也做了一個新的CRM主題。使用JavaScript獲取CRM主題顏色

是否有任何JavaScript功能從該主題獲取顏色,所以我可以將它用於我的按鈕?

當我從主題獲得的顏色發生變化時,自動更改按鈕顏色的目標被更改,無需更改我的代碼。

回答

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用以下網址:

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

+0

我已經在我的函數(簡單複製/粘貼)中實現了此代碼,還導入了CRM REST生成器以發出我自己的請求,但我沒有得到任何回覆。還有什麼要做的嗎? –

+0

您是否包含標題:'Accept':'Application/json'。如果你會忘記,響應中沒有數據。 –

1

主題信息存儲在背景中的一個名爲「主題」的實體中。該實體擁有不同UI元素的所有十六進制代碼。您可以使用SDK/JavaScript查詢此實體並獲取有關特定元素的信息。

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

而且閱讀十六進制代碼:"controlborder":"#000000","controlshade":"#000000"

0

謝謝大家的答案。它幫助我找到了解決這個問題的方法。

在此期間我已經建立一種多方式使用XRM服務工具包,以獲得從主題顏色(你必須安裝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; 
};