簡體   English   中英

Dynamics CRM 2013 Javascript升級

[英]Dynamics CRM 2013 Javascript Upgrade

我們正在測試從2013年到2016年的Dynamics CRM升級,以了解CRM升級后需要升級的自定義項。

我們有以下用於特定情況的Javascript網絡資源。

function MyOnLoad()
{
   var pickListValue = Xrm.Page.getAttribute("field1").getValue();
   if (Xrm.Page.ui.getFormType() == 2 && pickListValue == 100000006)
   {
      var ddlNewField1 = document.getElementById("field1");
      if (ddlNewField1.addEventListener) { 
         ddlNewField1.addEventListener ("change", function () {MyOnChange();}, false);  
      }
      else {
         ddlNewField1.attachEvent('onchange',MyOnChange);
      }
   }
}

function MyOnChange()
{
   if (Xrm.Page.getAttribute("field1").getValue() == "100000006") {    
       Xrm.Page.getControl("field2").setVisible(false);     
       Xrm.Page.getAttribute("field2").setRequiredLevel("none");    
   }

// If the selected value is not Other, hide Specify, and set requirement to Not Required    
   else {    
        Xrm.Page.getControl("field2").setVisible(true);  
        Xrm.Page.getAttribute("field2").setRequiredLevel("required");
   }
}

該代碼在我們的Dynamics CRM 2013中運行良好,旨在執行以下操作:

加載潛在客戶表單時,如果將FIELD1的值設置為特定值,它將顯示第二個字段FIELD2並使其成為業務所需。

這里最棘手的部分是,僅當表單加載時第一個字段包含該特定值時,第二個字段才可見。 如果由於某種原因在表單加載期間第一個字段的值不同,那么即使您選擇該特定值,第二個字段也不會顯示。

因此,恢復:

  • 在表單加載中從不顯示FIELD2

  • 如果“在窗體上加載”,那么FIELD1的值等於X並且FIELD1的值更改->顯示FIELD2並使其為必填項

  • 如果在“窗體加載”中FIELD1的值不等於X並且FIELD1的值更改->即使FIELD1的選擇因為最初不是X而變為X,也從不顯示FIELD2

我試圖解釋自己,所以我希望我對這個實際的javascript的功能很清楚。

升級后出現的問題與“ addEventListener”有關:

TypeError:無法在MyOnLoad讀取null的屬性'addEventListener'

我想問問是否有人可以幫助我們升級此Javascript,或者是否存在可以替代它的業務規則。 我實際上嘗試設置業務規則,但是無法在業務規則中區分負載和更改的條件。

謝謝

使用document.getElementById時,請勿像執行操作那樣訪問DOM。 微軟的話來說:

JavaScript開發人員習慣於與代碼中的文檔對象模型(DOM)元素進行交互。 您可以使用window.getElementById方法或jQuery庫。 您可以在HTML Web資源中自由使用這些技術,但不支持它們訪問Microsoft Dynamics 365應用程序頁面或實體表單中的元素。 而是通過Xrm.Page對象模型公開對實體表單元素的訪問。 Microsoft Dynamics 365開發團隊保留更改頁面組成方式(包括元素的ID值)的權利,因此使用Xrm.Page對象模型可以保護您的代碼免於實現頁面方式的更改。

在您的情況下,您可以改為使用受支持的addOnChange

Xrm.Page.getAttribute("field1").addOnChange(MyOnChange)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM