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。

      

      

      

      

  • 相关阅读:
    hbase单机安装和简单使用
    工作随记--div最小高度
    工作随记——弹出QQ联系方式
    关于vs2012解决方案中项目DLL文件引用问题
    工作随想——框架之我见
    jQuery 选择表格(table)里的行和列及改变简单样式
    ASP.NET的Get和Post方式的区别归纳总结
    C# 静态类与非静态类、静态成员的区别
    引用静态资源的url添加版本号,解决版本发布后的浏览器缓存有关问题
    python技巧 一等函数
  • 原文地址:https://www.cnblogs.com/yobyron/p/MultiSelect.html
Copyright © 2011-2022 走看看