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

Javascript - Dynamics CRM Online - Passing a lookup field value to a form through openEntityForm

我正在使用 Xrm.Utility.openEntityForm 克隆记录。当我调用 openEntityForm 时,我有一组属性需要复制到新表单中。为此,您传入一个 parameters 对象,该对象填充了原始表单中的属性值。

我的问题是:如何将查找字段的值作为参数对象传递给参数对象?我有一个名为 "Department" 的查找字段——我得到的原始值是这样的:

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

为了在克隆记录上设置字段值,我首先创建了一个参数对象——var parameters = {};——然后我像这样设置查找字段的值——

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

参数对象被传递给 openEntityForm 方法。这用于设置新表单的部门字段的值,但该字段显示为“(无名称)”。

我试过这样做:

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

但这没有用,我收到错误提示 parameter["new_departmentid"] 需要 "UniqueId" 的数据类型。

如何使用此方法提取名称以正确填充查找字段?感谢您的帮助。

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

  1. 一个用于使用字段 ID 的 ID
  2. 一个是使用字段 ID 的名称 + "name"
  3. 一个用于使用字段的 id + "type" 的类型。

这应该适合你:

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

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