升级到Dynamics CRM Online 2016后某些javascripts中的问题

时间:2016-07-12 17:20:01

标签: dynamics-crm dynamics-crm-online dynamics-crm-2015 dynamics-crm-2016 xrm

我们刚刚将CRM Online 2015中的一个从CRM Online升级到CRM Online 2016.

虽然我可以看到其他功能正常工作,但在特定场景中我们有一个主要的显示阻止:

以下是来自页面加载期间调用的java脚本函数的代码:

function SetDefaultValuesInLookup()
{
  Xrm.Page.getAttribute("new_applicationcontactid").setValue([{ id: 
records.new_Contact.Id, name: records.new_Contact.Name, entityType: records.new_Contact.LogicalName }]);

  ........

  Xrm.Page.getAttribute("new_applicationtype").setValue(1000002);
}

function ShowHideFields()
{
  var applicationtype = Xrm.Page.getAttribute("new_applicationtype").getValue();

  ...............

}

总结SetDefaultValuesInLookup函数在表单中为查找字段“Application Contact Id”设置一个值,并根据某些条件设置“new_applicationtype”。

这两个函数在表单加载中注册,以便按顺序执行。 然而,问题是 - 有时SetDefaultValuesInLookup方法在执行第一个getAttribute值后突然终止,或者如果方法完成执行,那么我们在new_applicationtype字段中没有得到值。或者有时,这两种方法都能正常工作。

我尝试调试代码,并且可以看到我们每次都会获得Id,Name和LogicalName属性,因此在该级别没有问题。

我想知道CRM 2016中是否存在不支持的内容? 此外,此功能仍然完美适用于在线2015。

1 个答案:

答案 0 :(得分:1)

尝试下面给出的代码,它对我有用

var object = new Array();
		object[0] = new Object();
		object[0].id = records.new_Contact.Id;
		object[0].name = records.new_Contact.Name;
		object[0].entityType = records.new_Contact.LogicalName;
		Xrm.Page.getAttribute(fieldName).setValue(object);