2017-05-08 5 views
-1

私はMicrosoft Dynamics CRM 2016で作業しています。リードフォームにdescriptionフィールドがあり、これにはHTML Webリソースが追加されています。 CRMフォームにdescriptionという値を入力すると、HTML Webリソースに表示されます。マイクロソフトダイナミクスcrmフォームからhtml Webリソースへの価値を得る方法

これはどのように達成できますか?

HTML Webリソースコード:私はウェブリソースのプロパティで次に

<html> 
<head> 
<script src="../ClientGlobalContext.js.aspx" type="text/javascript"></script> 
<script text="text/javascript"> 
    var description = Xrm.Page.getAttribute("description").getValue(); 
</script> 
</head> 
<body> 
<table> 
    <thead><tr><th>Parameter</th><th>Value</th></tr></thead> 
    <tbody> 
    <tr><td>description</td><td id="description">null</td></tr> 

    </tbody> 
</table> 
</body> 
</html> 

  • は、カスタムパラメータを追加しました:(データ)= RelatedEntity =は
  • & RelatedField =説明をリードレコードオブジェクトタイプのコードと一意の識別子をパラメータとして渡すオプションを有効にしました
  • が追加されましたdescription保留中
+0

問題を解決するために質問を展開する必要があります(例:試みた1つ以上の解決策を記述しますが、あなたのために働かない*なぜ*あなたのために働かないのかを指定してください)そうでなければ、あなたの研究に関する研究が不足しているため、また、CRMバージョン(2016は8.0または8.1を意味しますか?) – Alex

答えて

1

属性にJavaScript onChange()イベントを添付できます。イベントは説明の値を取得し、HTMLコントロールから要素を取得し、要素の値をdescription属性の値と同じに設定します。

ここでそれがどのように見えるかの例です:

function descriptionOnChange() { 
    // Get the value of the description attribute. 
    var description = Xrm.Page.getAttribute('description').getValue(); 

    // Get the HTML iFrame object. 
    var iFrame = Xrm.Page.ui.controls.get('IFRAME_WebResourceName').getObject(); 

    // Get the element from the iFrame. 
    var element = iFrame.contentWindow.document.getElementById('htmlDescription'); 

    // Set the element's value. 
    element.value = description; 
} 

注:クロスフレームスクリプトがあなたのiFrameのプロパティで無効になっていないことを確認:

cross-frame scripting enabled


あなたはただし、ドメイン間のiFrameリクエストがブロックされているとエラーが発生することがあります。説明と回避方法については、this postを参照してください。CRMで

回避策の実装は次のようになります。

<script> 
    window.addEventListener('message', function(event) { 
     if (~event.origin.indexOf('https://<yourCRMUrl>')) { 
      document.getElementById('htmlDescription').value = event.data; 
     } else { 
      return; 
     } 
    }) 
</script> 
  • 変更あなたのdescriptionの内容:

    1. は、メッセージを受け入れ、処理するために、あなたのHTMLの<body><script>タグを追加します属性のonChange()イベントを次のように変更します。

      var description = Xrm.Page.getAttribute("description").getValue(); 
      var iFrame = Xrm.Page.ui.controls.get('IFRAME_WebResourceName').getObject(); 
      
      iFrame.contentWindow.postMessage(description, '*'); 
      
  • +0

    を含めるか、WebAPIのフィールドの値をWebリソースに表示させて、フォームにiframe onsaveをリフレッシュさせます – Alex

    +0

    私はかなりの限られた仮定質問の情報1つは、HTML iFrameがデータをすぐに受信できるようになるぐらい早くなることです。 –

    +0

    ありがとうございます。私は私の質問を編集しました。これは私が試したものです。あなたはそれに基づいて私を助けてくれますか? – pkm

    0

    あなたはこのような何か試すことができます:あなたのコードが大きくなるにつれて、あなたは、独自のWebリソースに移動し、このようにHTMLのheadに含めることができ、また

    <html> 
     
    <head> 
     
    <script src="ClientGlobalContext.js.aspx" type="text/javascript"></script> 
     
    <script type="text/javascript"> 
     
    function onLoad() { 
     
        var description = parent.Xrm.Page.getAttribute("description").getValue(); 
     
        document.getElementById("description").innerHTML = description; 
     
    } 
     
    </script> 
     
    </head> 
     
    <body onload="onLoad()"> 
     
    <table> 
     
        <thead><tr><th>Parameter</th><th>Value</th></tr></thead> 
     
        <tbody> 
     
        <tr><td>description</td><td id="description">null</td></tr> 
     
        </tbody> 
     
    </table> 
     
    </body> 
     
    </html>

    を:

    <script src="myLibrary.js" type="text/javascript"></script>

    関連する問題