注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

Dynamics CRM中的查找字段联动效果之一:配置为主的方法  

2015-09-23 16:01:45|  分类: CRM客户端开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复155或者20150923可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!
有些时候我们需要对查找字段做筛选,我这里以实际例子进行说明。以典型容易理解的省市联动的例子来做说明,我这里建立了一个地区设置的实体,除了自带的主属性字段名称的显示名称被我改成地区名称外,我新增了如下两个字段:
Dynamics CRM中的查找字段联动效果 - 罗勇 - 微软MVP-罗勇的博客
 
录入了三个省份的部分数据如下:
Dynamics CRM中的查找字段联动效果 - 罗勇 - 微软MVP-罗勇的博客

每条记录打开的样子大致如下(因为我是湖南省衡阳市的,所以就以衡阳市为例):
Dynamics CRM中的查找字段联动效果 - 罗勇 - 微软MVP-罗勇的博客
 
 我们先试试配置的方法,我为这个实体建立了一个公共视图如下,就是只显示省级地区的视图:
Dynamics CRM中的查找字段联动效果 - 罗勇 - 微软MVP-罗勇的博客
 
保存后点击 另存为 一个名称为 市级地区 的视图,并更改新的 市级地区 视图的筛选条件为 地区级别 等于 市级。
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
输入省份和城市的字段我放在测试实体的这个地方:
Dynamics CRM中的查找字段联动效果 - 罗勇 - 微软MVP-罗勇的博客
 
然后我设置省份字段的属性如下:主要是设置了 默认视图为我之前创建的 省级地区,视图选择器我使用了关闭,这是为了防止用户选择到别的视图进行筛选可以选择的记录,选择到别的非省级地区。
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
然后我设置了 城市 字段的属性如下:除了设置 默认视图为 市级地区 , 视图选择器选择关闭以外,这里增加设置了 相关记录筛选,记得将 允许用户关闭筛选器 这个默认选中的选项取消哦。
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
保存并发布后我们去看看效果,可以看到 省份字段 只能选择省份,就算打开查找记录窗口也只能选择省份,不能选择到其他的地区。
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
选择好省份以后,去选择 城市 的时候也只能选择 湖南省下面的市,这个也基本符合要求:
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
当然也有不符合要求的,我这里列出来:
更改了省份以后,城市字段的值不会变化,应该要清除。比如我将省份更改为广东省以后,我之前选择的城市字段值为 衡阳市 还是没有变化,这不符合要求,一般应该清除。
可能还会有人提到,如果不先选择省份,也是可以选择城市的,这个在有些项目中是不行的,一定要先选择大类,再选择小类。其实这个不是问题,一般的做法是选择了城市以后,自动填充省份。
我们用业务规则来解决上面的问题的一部分,就是删除省份字段的值以后,清除城市字段的值。
最容易令人想到的是如下的业务规则,虽然做到了省份为空的时候清空城市,但是因为锁定了城市字段,所以保存的时候城市字段的值不会保存,还是存在的,使用业务规则的朋友要注意了
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
所以我改用如下的业务规则:
Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客
 
测试了一下是有效的,你可能会问,我的业务规则的操作步骤是将城市字段的值设置为省份,为啥不直接设置为空值呢?我也想这么做,但是目前的CRM 2015版本不支持,据说CRM 2015 Update 1以后就支持了。
剩下的事情需要代码了,我这里使用的代码如下,将省份字段和城市字段的 OnChange时间分别关联到如下的方法:

function ProvinceOnChangeHandler() {
var province = Xrm.Page.getAttribute("new_province").getValue();
var city = Xrm.Page.getAttribute("new_city").getValue();
if (city != null) {
Xrm.Page.getAttribute("new_city").setValue(null);
}
}

function CityOnChangeHandler() {
var city = Xrm.Page.getAttribute("new_city").getValue();
if (city != null) {
var province = Xrm.Page.getAttribute("new_province").getValue();
if (province == null) {
XrmServiceToolkit.Rest.Retrieve(
city[0].id,
"new_AreaSet",
"new_ParentArea",
null,
function (result) {
var toValue = new Array();
toValue[0] = new Object();
toValue[0].id = result.new_ParentArea.Id;
toValue[0].entityType = result.new_ParentArea.LogicalName;
toValue[0].name = result.new_ParentArea.Name;
Xrm.Page.getAttribute("new_province").setValue(toValue);
},
function (error) {
Xrm.Utility.alertDialog(error.message);
},
true
);
}
}
}

测试的时候表明前面定义的业务规则会带来不好效果,就是不输入省份的时候,直接输入城市,满足了业务规则的条件,会将城市设置为空值,所以我禁用了了那个业务规则。现在测试正常了,直接输入城市,比如衡阳市,会自动填充为 湖南省,更改省份字段的值或者删除省份字段的值会自动删除城市字段的值,保存也没有问题。

素格格新疆特产店--做最好新疆特产的搬运工。 本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!素格格新疆特产店淘宝网址是 http://sugege.taobao.com 欢迎自助购买。

Dynamics CRM中的查找字段联动效果之一:配置为主的方法 - 罗勇 - 微软MVP-罗勇的博客

  评论这张
 
阅读(419)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017