参与过Dynamics CRM相关工作的朋友们都知道,Dynamics 365之前并没有多选域字段,想要实现多选域,需要自己添加WebResource定制,而这也带来了一系列需要考虑的情况,比如额外的字段消耗,逻辑上复杂的转换规则等,更有甚者,会去改变涉及多选域情况的业务逻辑。但随着Dynamics 365 V9版本的发布,多选域的问题将不再复杂(针对简单的需求),因为MS终于把多选域字段添加了进来。

  1. 添加多选域字段

  与新建OptionSet的方式没有区别,选择字段类型“MultiSelect Option Set”,也可以创建一个Global Multiple Select Option Set

  

  在创建完之后,我们把它Publish到Form上,来看看具体的选择效果是什么样的

  

  1. 支持全选/反全选
  2. 支持搜索,是包含的查询结果
  3. “4 items”显示的是查询的结果数目,默认是所有
  4. 可以通过点击“x”来去掉选项

  2. Advanced Find

  既然这是一个字段,那么当然可以通过Advanced Find查询,对比以前的规则条件,多选域多了两个规则:“Contains Values”,"Does Not Contains Values"

  

  那么FetchXml也相应的有所改变

 <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="account">
<attribute name="name" />
<attribute name="primarycontactid" />
<attribute name="telephone1" />
<attribute name="accountid" />
<order attribute="name" descending="false" />
<filter type="and">
<condition attribute="new_multiselect" operator="contain-values">
<value>100000000</value>
</condition>
<condition attribute="new_multiselect" operator="not-contain-values">
<value>100000001</value>
</condition>
<condition attribute="new_multiselect" operator="in">
<value>100000000</value>
<value>100000002</value>
</condition>
</filter>
</entity>
</fetch>

  3. API调用

  如果想执行多选域相关的操作,比如查询结果,这里需要引用最新版本的dll。在V9版本之后,MS将不再像以前那样提供SDK的下载包,Assembly直接通过Nuget添加,具体的名字:Microsoft.CrmSdk.CoreAssemblies。里面包含了需要用到的Microsoft.Xrm.Sdk.dll和Microsoft.Crm.Sdk.Proxy.dll

  

  接着我们看看多选域字段值到底是什么样的。

  

  多选域字段的值是一个集合:OptionSetValueCollection,每一个被选中的选项是一个OptionSetValue对象。

  

  并且像OptionSet一样,FormattedValues里可以得到所有被选中选项的Label值,但是这里需要注意一点,Label值是用“;”分号隔开,而且除了第一个值之外,后续的值的前面都会有个空格,在进行数据操作前,需要把空格去掉。

  再提醒一下,这里需要用到V9版本及以后的dll,不然多选域字段的Value都是空。

  之前说到Operation有更新,那么对应于Advanced Find里面的情况,API中的Operator值分别是ConditionOperator.ContainValues和ConditionOperator.DoesNotContainValues。

  

  

  

  

最新文章

  1. NuGet镜像上线试运行
  2. 比较ID和Name
  3. python 筛选股票
  4. Linux环境下stl库使用(map)
  5. translate居中
  6. PL/SQL中LOOP循环控制语句
  7. 神奇的 BlocksKit(1):源码分析(下)
  8. js 获取时间 new Date()详细介绍
  9. fedora安装各种应用软件
  10. Django 设置cookies与获取cookies.
  11. DaemonSet 典型应用场景 - 每天5分钟玩转 Docker 容器技术(129)
  12. springMVC源码分析--RequestMappingHandlerAdapter(五)
  13. &quot;人机&quot;对战:电脑太简单了,我是射手 skr~skr~skr
  14. ace-socket-reconnect
  15. flask第十篇——url_for【3】
  16. JVM调优总结 -Xms -Xmx -Xmn -Xss(转)
  17. 最大公约数gcd与最小公倍数lcm
  18. windows10系统telnet登陆
  19. 解题:洛谷2257 YY的GCD
  20. MySQL和Redis面试题小结

热门文章

  1. 通过自定义的URL Scheme启动你的App
  2. Servlet基础(工作原理、生命周期)
  3. Java数据持久层框架 MyBatis之API学习八(Java API详解)
  4. Postgresql中string转换成timestamp类型
  5. video.js不能控制本地视频或者音频播放时长
  6. python_如何快速下载安装第三方库?
  7. Springboot中使用AOP统一处理Web请求日志
  8. awk解决实际问题例子
  9. Css3:transform变形
  10. MySQL中, 如何查询某一天, 某一月, 某一年的数据.