【问题标题】:Javascript - Dynamics CRM Online - Passing a lookup field value to a form through openEntityFormJavascript - Dynamics CRM Online - 通过 openEntityForm 将查找字段值传递给表单
【发布时间】:2016-11-18 20:10:28
【问题描述】:

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

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

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”的数据类型。

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

【问题讨论】:

    标签: javascript crm microsoft-dynamics dynamics-crm-online xrmservicetoolkit


    【解决方案1】:

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

    1. 一个使用字段ID的ID
    2. 一个使用字段的 id +“名称”的名称
    3. 使用字段的 id +“类型”的类型。

    这应该适合你:

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

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

    【讨论】:

    • 谢谢!那行得通。请问你的克隆版本是怎么做的?我预见到以我的方式达到 URL 限制可能会出现问题。你的解决方案能解决这个问题吗?
    • 不客气。不,我的不需要那么健壮。只是省略了某些对发送到创建表单没有意义的字段,例如 createdon、created by、modifiedon 等。还有我在答案中提到的那种遗漏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    相关资源
    最近更新 更多