zoukankan      html  css  js  c++  java
  • Dynamics 365 Online-多选域

     参与过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也相应的有所改变

     1 <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
     2   <entity name="account">
     3     <attribute name="name" />
     4     <attribute name="primarycontactid" />
     5     <attribute name="telephone1" />
     6     <attribute name="accountid" />
     7     <order attribute="name" descending="false" />
     8     <filter type="and">
     9       <condition attribute="new_multiselect" operator="contain-values">
    10         <value>100000000</value>
    11       </condition>
    12       <condition attribute="new_multiselect" operator="not-contain-values">
    13         <value>100000001</value>
    14       </condition>
    15       <condition attribute="new_multiselect" operator="in">
    16         <value>100000000</value>
    17         <value>100000002</value>
    18       </condition>
    19     </filter>
    20   </entity>
    21 </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。

      

      

      

      

  • 相关阅读:
    关于数据库,程序员应该了解的那些事
    Kafka实战宝典:如何跨机房传输数据
    数据挖掘从入门到放弃(三):朴素贝叶斯
    面试官:数据库自增ID用完了会怎么样?
    《我想进大厂》之网络篇夺命连环12问
    面试官:缓存一致性问题怎么解决?
    空指针的传说
    淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
    苦修月余,斩获bigo、腾讯offer,面经奉上!
    《我想进大厂》之Spring夺命连环10问
  • 原文地址:https://www.cnblogs.com/yobyron/p/MultiSelect.html
Copyright © 2011-2022 走看看