本人微信和易信公众号: 微软动态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 }]);
}
}
}

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

openEntityForm时候如何给关于(regardingobjectid)类型查找字段赋值?的更多相关文章

  1. openEntityForm如何给关于(regardingobjectid)类型查找字段赋值?

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

  2. 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;

    http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...

  3. 类型查找器 ITypeFinder

    NopCommerce为了支持插件功能,以及支持一些自动注册的功能.系统提供了类型查找器.ITypeFinder以及实现类就是提供此功能.通过类型查找器可以查找本程序域中的类,也可以查找整个bin目录 ...

  4. Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象

    FindObjectOfType<>()   是按类型查找游戏对象.<>里面填写类型,那要是有多个这种类型的呢?来试一下. 1. 新建一个场景,新建一个Test.cs脚本,内容 ...

  5. Dynamics 365中使用Web API将查找字段的值设置为空值的方法。

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

  6. Dynamics CRM2016 Web API之删除单个查找字段值

    之前的博文中有介绍过,Web Api中的一个删除单个属性的Api但没提供查找字段的删除方法,本篇补充上,这里给出的示例代码是C#的(主要看url的拼接),看下url中最后的/$ref,这个标示表明了当 ...

  7. oracle--导出、导入blob类型的字段

    blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据. 数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用inser ...

  8. C# 禁止修改已装箱了的值类型的字段值,但是可以通过接口的方式实现

    C# 默认是不能修改已装箱了的值类型中字段的值,但是可以通过 值类型实现指定的接口来改变 首先定义一个接口 interface IChange { void Change(int a, int b); ...

  9. SQL查询数据库中所有指定类型的字段名称和所在的表名

    --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...

随机推荐

  1. composer安装报错Composer throws [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist

    解决方法:删除C:\Users\Administrator\AppData\Roaming\Composer\vendor\fxp下的文件

  2. .NET Core+Selenium+Github+Travis CI => SiteHistory

    前言 总是三分钟热度的我折腾了一个可以每天自动截取指定网站页面并保存到Github的项目SiteHistory,感觉挺好(每次都这样). 想知道YouTube今天的首页长啥样么?点此查看 想知道You ...

  3. js获取ip地址,操作系统,浏览器版本等信息,可兼容

    这次呢,说一下使用js获取用户电脑的ip信息,刚开始只是想获取用户ip,后来就顺带着获取了操作系统和浏览器信息. 先说下获取用户ip地址,包括像ipv4,ipv6,掩码等内容,但是大部分都要根据浏览器 ...

  4. Linux企业运维人员最常用150个命令汇总

    命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...

  5. 手把手封装数据层之DataUtil数据库操作的封装

    上一篇我们写完了数据库连接的封装 没有看的请移步上一篇关于数据库连接的内容 这次我们讲数据库操作的封装.数据库的操作就是增删改查:心再大一点就可以直接分为查询和其他. 因为查询是有返回对象的,而其他都 ...

  6. jsp 使用Common-FileUpload组件文件上传及限制上传类型

    1.将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为    mu ...

  7. 格式化JSON字符串

    提出需求 异步调用获取JSON数据时非常不直观,每次都需要格式化一次,才能直观的看到数据集合的结构,现在需要实现输出带缩进的格式. 实现效果 在浏览器的查看源文件中已经实现格式化,如果是页面使用,可以 ...

  8. 极化码的matlab仿真(3)——SC译码(1)

    一个好码必须具备两个要素:可靠.高效. 高效的码要求码的编译方案都具有较低的复杂度.极化码出现后,Arikan本人提出使用SC译码方案来进行译码操作.SC全称successive cancellati ...

  9. Windows下配置Nginx

    一.今天是2017年1月18日.揣着一种也许叫做冲动的心情,决定以后每天都记录和回顾新涉及的技术,巩固已学到的知识,坚持. 二.回归到今天的技术主题,因为之前对于[反向代理]这种技术充满了好奇,借此机 ...

  10. echarts用法

    参考文档: https://github.com/xlsdg/vue-echarts-v3 1.下载echarts插件 $ npm install --save vue-echarts-v3 2.引入 ...