Javascript - Dynamics CRM Online - 通过openEntityForm将查询字段值传递给表单

问题描述:

我使用Xrm.Utility.openEntityForm来克隆记录。当我拨打openEntityForm时,我需要将一组属性复制到新表单中。您可以通过传入填充了原始表单上属性值的parameters对象来完成此操作。Javascript - Dynamics CRM Online - 通过openEntityForm将查询字段值传递给表单

我的问题是:如何将查找字段的值作为参数对象中的参数传递?我有一个名为“部门”查找字段 - 我得到的原始值是这样的:

var department = parent.Xrm.Page.getAttribute("new_departmentid").getValue();

要设置字段的值在克隆的记录,我最初创建一个参数对象 - var parameters = {}; - - 我设置的值对于这样的查找字段 - 获取传递到openEntityForm方法

parameters["new_departmentid"] = department[0].id;

的参数对象。这可以设置新窗体部门字段的值,但该字段显示“(No Name)”。

我试图做这样的事情:

parameters["new_departmentid"] = { id: department[0].id, name: department[0].name, entityType: "new_department" };

但没有工作,我得到的错误说parameter["new_departmentid"]预计“唯一ID”的数据类型。

我该如何使用这个方法来正确填充查找字段?谢谢你的帮助。

我有一个不使用openEntityForm的克隆函数,它只是构造一个URL,然后调用window.open。但它应该是一样的。您可以通过创建三个独立的参数传递查找值:

  1. 一个使用领域的id +“姓名”
  2. 一个使用类型,使用领域的ID
  3. 一个名字的ID字段的id +“type”。

这应该为你工作:

parameters["new_departmentid"] = department[0].id; 
parameters["new_departmentidname"] = department[0].name; 
parameters["new_departmentidtype"] = department[0].entityType; 

奖金:请注意,对于查找,只能采取一个实体类型,则可以省略类型参数。只有在将值传递给可以采用多种类型的所有者或客户等查找时才需要。省略该参数将允许您在达到约2k个字符的URL限制之前传递更有价值的信息。

+0

谢谢!这工作。我可以问你如何做你的克隆版本?我预见到可能会遇到一个问题,就是我按照这种方式来限制URL限制。您的解决方案是否解决了这个问题? –

+0

不客气。呃,我不需要那么强大。只是省略了某些字段,这些字段没有意义发送到创建表单,例如createdon,created,modifiedon等等。还有我在答案中提到的那种类型的遗漏。 – Polshgiant