2017-05-08 44 views
-1

我上的Microsoft Dynamics CRM 2016年的工作,我有我的潛在客戶表單上description場,我已經添加了一個HTML網頁資源以及價值。當我在CRM表單上輸入description值時,它應該顯示在我的HTML網頁資源上。如何讓從Microsoft Dynamics CRM的形式HTML網頁資源

這是如何實現的?

HTML網頁資源代碼:

<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 pendencies
+0

你應該擴大的問題,以顯示你試圖解決這個問題(即描述你嘗試一個或多個解決方案,但不爲你工作,並指定* *爲什麼他們不爲你工作),否則問題將是downvoted並由於缺乏對你的一部分研究忽略。此外,包括CRM版本(2016意味着8.0或8.1?) – Alex

回答

1

你可以一個JavaScript的onChange()事件附加到description屬性。該事件將獲取描述的值,然後從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可能是這樣的:

  1. 一個<script>標籤添加到您的HTML的<body>接受和處理消息:

    <script> 
        window.addEventListener('message', function(event) { 
         if (~event.origin.indexOf('https://<yourCRMUrl>')) { 
          document.getElementById('htmlDescription').value = event.data; 
         } else { 
          return; 
         } 
        }) 
    </script> 
    
  2. 更改您的description的內容屬性的的onChange()事件,這一點:

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

或只是使網絡資源顯示字段的值從的WebAPI和形式刷新的OnSave – Alex

+0

我做了相當多的假設,在有限的iframe問題中的信息。一個是越早HTML的iFrame可以接收數據越好。 –

+0

謝謝你的答覆。我編輯了我的問題,無論我嘗試過什麼。你能幫我基於這個嗎? – pkm

0

你可以嘗試這樣的事情:

<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>

此外,由於你的代碼的增長,你可以將它移動到自己的網絡資源,它包括在HTML頭部這樣:

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

相關問題