2016-09-19 13 views
0

私は自分のCRMソリューションをいくつかのJS Web Resourceを含めて、アカウントエンティティに新しいボタンを追加する必要があります(彼らはフォーム本体に配置されています)。私も新しいCRMテーマを作った。JavaScriptを使用してCRMテーマカラーを取得する

そのテーマから色を取得するJavaScript関数はありますか?それで私のボタンに使用できますか?

私のコードを変更する必要なく、テーマから取得した色が変更されたときに自動的にボタンの色を変更するという目標。

答えて

2

はデフォルトを返します。次のコードを作成するためにCRM REST Builderを使用することができます(つまり、使用中の)テーマ:(

ます。http:

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のを使用することができますs)://SERVER/ORG/api/data/v8.0/themes?$ filter = isdefaulttheme eq true

+0

私はこのコードを自分の関数(単純なコピー/貼り付け)に実装しました。また、独自の要求をするためにCRM REST Builderをインポートしましたが、応答がありません。もっと何かするべきことはありますか? –

+0

ヘッダーを 'Accept': 'Application/json'に含めましたか?あなたが忘れてしまった場合、応答にはデータがありません。 –

1

テーマ情報は、バックグラウンドで「テーマ」というエンティティに格納されます。このエンティティは、異なるUI要素のすべての16進コードを保持します。 SDK/JavaScriptを使用してこのエンティティを照会し、特定の要素に関する情報を取得できます。 http://contoso.com/api/data/v8.0/themes

そして、16進コードを読んで:RESTを使用して

"controlborder":"#000000","controlshade":"#000000"

0

は答えありがとうございました。この問題を解決する私の道を見つけるのを助けました。私はあなたがこのソリューションを使用するXRMServiceToolkitをインストールする必要があります(XRMサービスツールキットを使用してテーマから色を取得するもう一つの方法を設立している。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; 
}; 
関連する問題