本人微信和易信公众号: 微软动态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. Win10下C:\Users\John以账户名称命名的系统文件夹用户名的修改

    Win10下C:\Users\John以账户名称命名的系统文件夹用户名的修改.. 有时候我们由于各种原因想要更改DOS窗口下的账户名称,更改DOS窗口用户名C:\Users\XXX> 即更改为C ...

  2. tensorflow笔记(五)之MNIST手写识别系列二

    tensorflow笔记(五)之MNIST手写识别系列二 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7455233.html ...

  3. 没有基础如何学习web渗透测试?

    如果只是因为感兴趣玩玩的话,你可以不需要学习太多的脚本程序. 但是以下条件要具备 1.能看懂教程:能理解原理,例如解析漏洞,sql注入逻辑等 2.前端代码审计:html js css 3.主流工具的使 ...

  4. poj2051 Argus

    Description A data stream is a real-time, continuous, ordered sequence of items. Some examples inclu ...

  5. 【译】StackExchange.Redis中文使用文档

    StackExchange.Redis中文使用文档 Intro 最近想深入学习一些 Redis 相关的东西.于是看了看官方的项目StackExchange.Redis,发现里面有一份文档,于是打算翻译 ...

  6. sed修炼系列(一):花拳绣腿之入门篇

    本文为花拳绣腿招式入门篇,主要目的是入门,为看懂sed修炼系列(二):武功心法做准备.虽然是入门篇,只介绍了基本工作机制以及一些选项和命令,但其中仍然包括了很多sed的工作机制细节.对比网上各sed相 ...

  7. C# 单例模式(Singleton Pattern)(转SuagrMatl)

    单例模式的定义: 确保一个类只有一个实例,并提供一个全局访问点. 首先实例大家应该都明白就是类生成对象的过程简单的就是String s=new String(),则s就是个实例. Q:如何只生成一个实 ...

  8. MVC配置伪静态

    提出需求 伪静态能提高搜索引擎收录,还不影响硬盘寿命,是一个不错的选择,但是会增加CPU和内存开销,由于时候也需要实现伪静态. web.config配置 <system.webServer> ...

  9. 迁移学习-Transfer Learning

    迁移学习两种类型: ConvNet as fixed feature extractor:利用在大数据集(如ImageNet)上预训练过的ConvNet(如AlexNet,VGGNet),移除最后几层 ...

  10. docker学习之--日常命令

    .查看镜像 sudo docker images sudo pull docker.io #下载镜像 sudo push docker.io #上传镜像 sudo docker save -o cen ...