首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dynamics 2013 Javascript升级

Dynamics 2013 Javascript升级
EN

Stack Overflow用户
提问于 2018-02-07 16:18:10
回答 1查看 310关注 0票数 1

我们正在测试我们的动力CRM从2013年到2016年的升级,以了解客户关系管理升级后需要升级哪些定制。

我们有下面的Javascript We资源,我们正在使用的一个特定的案例。

代码语言: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 2013中运行良好,并打算执行以下操作:

当引导表单加载时,如果将FIELD1的值设置为特定值,它将显示第二个字段FIELD2并使其成为业务所需的字段。

这里棘手的部分是,只有当第一个字段在表单加载时包含该特定值时,第二个字段才是可见的。如果由于某种原因,表单加载期间第一个字段的值是不同的,则即使选择该特定值,第二个字段也不会显示。

因此,恢复:

  • 在表单加载中永远不会显示FIELD2
  • 如果在表单上加载FIELD1值等于X和FIELD1值更改,则->显示FIELD2并使其成为必需的
  • 如果在表单上加载FIELD1值不等于X和FIELD1值更改,则->永远不会显示FIELD2,即使FIELD1的选择变成X,因为它最初不是X

我试着解释自己,所以我希望我清楚这个实际的javascript是干什么的。

升级后出现的问题与“addEventListener”有关:

TypeError:无法在MyOnLoad处读取null的属性“addEventListener”

我想问的是,是否有人可以帮助我们升级这个Javascript,或者是否有一条业务规则可以取代它。实际上,我尝试设置业务规则,但无法在业务规则中分离加载和更改条件。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-07 17:42:01

不要像使用document.getElementById时那样访问DOM。用微软的话来说

JavaScript开发人员习惯于在代码中与文档对象模型(DOM)元素交互。您可以使用window.getElementById方法或jQuery库。您可以在HTML web资源中自由使用这些技术,但不支持它们访问MicrosoftDynamic365个应用程序页或实体表单中的元素。相反,对实体表单元素的访问是通过Xrm.Page对象模型公开的。MicrosoftDynamics365开发团队保留更改页面组成方式的权限,包括元素的ID值,因此使用Xrm.Page对象模型可以保护代码不受页面实现方式的更改。

在您的示例中,您可以使用支持的addOnChange

代码语言:javascript
复制
Xrm.Page.getAttribute("field1").addOnChange(MyOnChange)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48668491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档