zoukankan      html  css  js  c++  java
  • openEntityForm如何给关于(regardingobjectid)类型查找字段赋值?

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170924可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。

    SDK中有个章节 Set field values using parameters passed to a form ,可以通过URL打开新建记录的窗体,并给相关的字段赋值,但是将其中两种特殊的查找字段,分别是参与方列表查找字段(partylist lookup,该种类型的查找字段允许引用到多个实体的多条记录) 和 关于类型查找字段(regarding lookup,该种类型查找字段允许引用多个实体的一条记录) 列为特殊,不能直接通过URL参数对齐进行赋值。在项目中若有此类需求怎么办?Follow Me!

    场景:打开一条记录(我这里以打开一条罗勇测试记录为例),点击命令栏的一个按钮(我这里以点击提交按钮为例),打开新窗口,新窗口是一个任务的新记录,将任务的关于字段设置为打开的那条记录。

    尊重知识产权,本文的方法并非我首创,是正规方法,来自帖子 Passing regardingobjectidtype to Xrm.Utility.openEntityForm 中CRM Nerd 提供的答案。

    我这里简单解说下思路:

    • 就是将设置查找字段需要的值通过URL中的参数传递给打开的表单
    • 设置目标实体的表单需要允许接收这些传递过来的参数
    • 在表单的OnLoad事件中撰写代码,获取参数的值,并将其赋值给关于类型查找字段(当然参与方列表查找字段也可以)即可。

    下面是具体做法。罗勇测试实体表单上的提交按钮执行的按钮如下:

        var parms = {};
        parms["parm_regardingid"] = Xrm.Page.data.entity.getId();
        parms["parm_regardingname"] = Xrm.Page.data.entity.getPrimaryAttributeValue();
        parms["parm_regardingtype"] = Xrm.Page.data.entity.getEntityName();
        Xrm.Utility.openEntityForm("task", null, parms, { openInNewWindow: true });

    如果这时候点击按钮打开新窗口,你会发现错误如下:

    这是因为你的窗体没有允许接收这些非字段相关的参数,所以我们要打开实体(这里是任务实体)的主要窗体,点击【窗体属性】,打开【参数】页签,增加三个参数如下图:

    这三个参数的名字与前面代码中的参数名字有关,第一个Guid类型的参数我使用UniqueId作为其类型,其余两个使用SafeString作为类型,将实体保存并发布,你会发现前面的提交代码打开新建任务记录窗口不会报错了。下面是万里长征的最后一步了。

    为任务实体主窗体的OnLoad事件注册执行如下的代码:

    function TaskOnLoadHandler() {
        if (Xrm.Page.ui.getFormType() == 1) {//只有新建记录才执行如下逻辑
            var parms = Xrm.Page.context.getQueryStringParameters();
            var regardingId = parms["parm_regardingid"];
            var regardingName = parms["parm_regardingname"];
            var regardingType = parms["parm_regardingtype"];
            if (regardingId != undefined) {
                Xrm.Page.getAttribute("regardingobjectid").setValue([{ id: regardingId, name: regardingName, entityType: regardingType }]);
            }
        }
    }

    现在可以看到效果了,打开新建任务窗体后,关于字段已经赋值为正确的值了:

  • 相关阅读:
    JavaScript 金字塔
    最短路径—Dijkstra算法和Floyd算法
    Qt编程的一些技巧
    Qt-Creator 加入qwt库
    关于usr/bin/ld: cannot find -lxxx问题总结(Qt编译错误cannot find -lGL)
    根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统
    tslib1.4与Qt4.8.6的交叉编译与移植
    用树莓派做3G无线路由器
    python学习笔记6:面向对象
    pyhton学习笔记5:常用模块:datatime,random,json,re
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_OpenEntityForm_Set_RegardingObjectId_Value.html
Copyright © 2011-2022 走看看