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