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 }]);
}
}
}
现在可以看到效果了,打开新建任务窗体后,关于字段已经赋值为正确的值了:

openEntityForm时候如何给关于(regardingobjectid)类型查找字段赋值?的更多相关文章
- openEntityForm如何给关于(regardingobjectid)类型查找字段赋值?
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170924可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...
- 类型查找器 ITypeFinder
NopCommerce为了支持插件功能,以及支持一些自动注册的功能.系统提供了类型查找器.ITypeFinder以及实现类就是提供此功能.通过类型查找器可以查找本程序域中的类,也可以查找整个bin目录 ...
- Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象
FindObjectOfType<>() 是按类型查找游戏对象.<>里面填写类型,那要是有多个这种类型的呢?来试一下. 1. 新建一个场景,新建一个Test.cs脚本,内容 ...
- Dynamics 365中使用Web API将查找字段的值设置为空值的方法。
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复270或者20180424可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- Dynamics CRM2016 Web API之删除单个查找字段值
之前的博文中有介绍过,Web Api中的一个删除单个属性的Api但没提供查找字段的删除方法,本篇补充上,这里给出的示例代码是C#的(主要看url的拼接),看下url中最后的/$ref,这个标示表明了当 ...
- oracle--导出、导入blob类型的字段
blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据. 数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用inser ...
- C# 禁止修改已装箱了的值类型的字段值,但是可以通过接口的方式实现
C# 默认是不能修改已装箱了的值类型中字段的值,但是可以通过 值类型实现指定的接口来改变 首先定义一个接口 interface IChange { void Change(int a, int b); ...
- SQL查询数据库中所有指定类型的字段名称和所在的表名
--查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...
随机推荐
- SQLite在C#中的安装与操作
SQLite 介绍 SQLite,是一款轻型的数据库,用于本地的数据储存. 先说说优点,它占用资源非常的低,在嵌入式设备中需要几百K的内存就够了:作为轻量级数据库,他的处理速度也足够快:支持的的容量级 ...
- 人生苦短我用Python 第三周 函数周
函数的定义: 1,def 函数名(参数1,参数2......): "注释:函数的作用和参数,增加可读性", 2,函数体 3,返回值 最简单的函数: def func(): prin ...
- form enctype参数
application/x-www-form-urlencoded 表示在发送前编码所有字符(默认) multipart/form-data 不对字符编码.在使用包含文件上传控件的表单时,必须使用该值 ...
- jq 动态添加.active 实现导航效果
代码思路: 页面4: 页面5: 代码思路: 通过jq获取你打开页面的链接 window.location.pathname: 在HTML中给自己的li加入一个ID id的命名与网址链接中的href相 ...
- 环境配置-云服务器jdk与tomcat配置
我所实践的主机是麻花疼云的主机,第一次试用30天,装了个centos6.5,其实已经用商用专用镜像配置好环境了,包括jdk.tomcat等常用的内容,但是我实在是找不到他们安装在哪个目录下了,我就自己 ...
- 灾难恢复-boot分区的恢复方法
boot分区是系统启动中最重要的部分,如果服务器由于病毒攻击又或者被管理员误删除了boot分区.那么就会存在潜在的风险.为什么说是潜在的风险?因为boot分区被删除后系统仍在继续运行,看似无状况但是在 ...
- Linux平台 Oracle 12cR2 RAC安装Part3:DB安装
Linux平台 Oracle 12cR2 RAC安装Part3:DB安装 四.DB(Database)安装 4.1 解压DB的安装包 4.2 DB软件安装 4.3 ASMCA创建磁盘组 4.4 DBC ...
- MySQL命令无法结束
输入完sql语句后 输入分号结束,发现无法结束,原因一般是引号不对称导致的.再输入'; 或者对称的分号就可以结束.
- 10分钟搞懂Tensorflow 逻辑回归实现手写识别
1. Tensorflow 逻辑回归实现手写识别 1.1. 逻辑回归原理 1.1.1. 逻辑回归 1.1.2. 损失函数 1.2. 实例:手写识别系统 1.1. 逻辑回归原理 1.1.1. 逻辑回归 ...
- MySQL插入10万数据时间(结论:最快14.967s,每秒插入6681条)
记录我的一次MySQL操作Demo: 存储过程: DROP PROCEDURE IF EXISTS my_insert; CREATE PROCEDURE my_insert() BEGIN ; lo ...