在Salesforce IdeaExchange中一个投票比较多的Idea就是能够创建一个可多个对象共享的下拉列表。
类型通过Control 字段值获取Dependent List 值 拥有dependence的picklist在项目中经常出现,我们在项目中需要展示级联的picklist展示。 在Account中声明两个字段,Controlling_Picklist__c以及Master_Picklist__c两个picklist字段,其中Master_Picklist作为主 ? 2. 这里先可以看一下picklist metadata信息如下。 /0120I000000OaFoQAK/Controlling_Picklist__c" }, "Master_Picklist__c": { ; //选择的controlling picklist 的值 @track selectedMasterValue; //选择的dependent picklist的值
image.png 几乎每个Object中都有Picklist类型的项目,实际开发过程中会遇到画面上需要显示当前Picklist的值,利用Lwc如何开发呢,下边通过简单的例子说明一下。 我在【Account】Object中创建一个Picklist的项目【Importance__c】,具体有三个值,高,中,低 image.png 下边我们开发一个Lwc,用于在Account详细页面显示它当前值 ,通过Lwc的【getRecord】方法可以轻松取得Picklist项目的值。 通过上边的测试我们发现,Picklist项目取得的值是【API Name】,但我们在画面上想显示的是Label值,跟我们预想的不一致,要如何实现呢,考虑可以有以下三种实现方案。 1.toLabel方法 通过ApexClass,查询Picklist项目,然后使用toLabel方法进行转换,Js中通过调用Apex,取得查询结果 WarningMsgPanelCtrl.cls /**
类型字段的 picklist values。 如果需求不明确,或者需要指定的record type显示指定的picklist values,而 record type配置的 picklist values又可以实时变动的场景来说简直是灾难的,所以有了这篇的针对 1) 针对后台搭建,暂时满足两个场景 针对一个表可以获取到所有的 Picklist类型字段的所有的 Picklist值; 针对一个表的某个字段(可包含 record type)获取对应的Picklist 2)针对前台的搭建,因为需要从后台获取数据,需要保证数据获取支持异步处理,即数据处理完进行picklist 数据赋值。 第一个方法用来获取一个表的所有 Picklist类型字段的label api name对,key为api name,value为picklist的label。
id=sf.fields_creating_global_picklists.htm&type=5 当我们创建Picklist 字段时,比如很多表很多字段都会用到同样的 picklist value时, 我们通常会使用 Global Picklist。 入口为 set up搜索 picklsit以后选择 Picklist Value Sets然后针对业务上需要的场景,进行字段创建以及picklist value维护。 当我们创建picklist类型字段,可以选择基于 global picklist还是基于换行的手动输入。 坏处往往也来源于好处,因为绑定的太狠,所以当最开始的设计满足了 picklist value set的需求,picklist字段都绑定了同样的picklist value set,后续如果有其他的需要要求有一些新增一个字段值
之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据。通过sObject直接取恐怕很难做到,因为他只会显示一个值。 以下的代码中封装了PickList的values的值的获取方法,形参分别为需要获取的sObjectName以及字段的名称,如果不存在指定的sObjectName或者字段名称没有设置返回值,else代码块中 1 public class PickListValuesUtil { 2 /* 3 通过sObjectName和指定字段获取PickList的value值 4 */ 5 false, label=研究生, value=研究生}, 高中={isActive=true, isDefaultValue=false, label=高中, value=高中} } 如果想获取PickList 本篇只是通过封装的方法简单讲解获取PickList的value值,如果想要详细了解Schema命名空间以及System命名空间下的Schema类以及System命名空间下的sObject类,请查看官方API
本篇引用以下三个链接: http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html? /2012/01/record-type-picklist-values.html 我们知道,record type可以设置不同的profile针对类型为picklist的字段显示不同的values,但是 apex的API中,通过schema取出的Picklist的values为全部的值,并不能直接通过指定的方法取出指定的values。 2.通过sObjectType,Record Type Name以及field Name 获取类型为picklist的field values。 values 2.通过record type id获取相关字段应该具有的picklist values 总结:如果需要在apex中获取相关的picklist values然后进行相关后续处理可以参看上方引用的链接以及源码
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-from.html 群里面有个小伙伴问了一个关于两个有Dependence关系的Picklist字段如何在Apex中通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个 如下图,我们在Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个在配置中清晰可见,如何在代码中获取呢? ? Type的Picklist field Values,是不是也可以将中间页面写两个apex:inputField设置级联关系,通过参数将需要读取的内容获取出来,从而实现需求? 每一个validFor属性存储了一组的Bits,每个bit对应着一个Control Field Picklist Value。
但是当我们new一个PickList字段或者当我们validation写错误信息情况下,便只能通过一种语言写,那如何实现PickList,validation error message等的国际化处理呢 我们以Event__c表为例,Event__c表结构如下图所示,其中包含一个PickList字段以及一个Validation Rule。 ? ? 现在的PickList的Value以及Validation Rule的Error Message均为英文,通过国际化处理可以使不同国家的人显示不同语言。 3.点击左侧Translate,选择Language为Chinese(Simplified)即简体中文,设置Setup Component为Picklist Value,设置要操作的sObject为Event ,则下方会找到Event中的所有PickList,这里只有Event Type是PickList类型,将value均赋值中文,点击Save。
此篇参考:salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type) 我们在lightning中在前台会经常碰到获取picklist 的values然后使用select option进行渲染成下拉列表,此篇用于实现针对指定的sObject以及fieldName(Picklist类型)获取此字段对应的所有可用的values的公用组件。 因为不同的record type可能设置不同的picklist values,所以还有另外的参数设置针对指定的record type developer name去获取指定的record type对应的 Picklist values. 总结:篇中介绍了Picklist values针对with/without record type的公用组件的使用,感兴趣的可以进行优化,篇中有错误的欢迎指出,有不懂的欢迎留言。
在项目中我们可能会遇见这种情况,不同的Profile拥有不同的页面,页面中的PickList标签可能显示不同的值。这个时候,使用Record Types可以很便捷的搞定需求。 用户通过Profile进行分组,不同的Profile可以设置不同的Page Layout 以及显示不同的PickList的item值。 3.点击Save以后,会显示下图所示页面,点击下方Edit,修改相关的PickList的Item Value值; ? 5.按照上述1-4创建另外的Record Types,分配相关的Page Layouts以及设置不同的Picklist Values的值。 显示效果如下: Profile为Admin的显示页面 ? 总结:Record Types可以基于不同的Profile设置不同的显示页面以及不同的PickList的Values,并且只能基于Profile,如果项目通过Permission Set进行分组则无法使用
背景: Lead / Contact / Opportunity 都创建了自定义的Picklist字段 Primary,包含的值为True以及false。 这种情况下检查为组织安装的软件包,找到任何接触到 Lead的软件包,并检查作为该软件包一部分的任何自定义字段,确保在该软件包过期或禁用的情况下,它们不会仍被用于映射; Discrepancy in the mapped picklist field:针对picklist类型字段,如果两边picklist value不同,可能会导致失败,这种情况下检查两者的value值; Flow Error related to automation 如果不是2引起的,大概率是picklist匹配问题导致,两种情况: picklist value不匹配; picklist类型变了其他的类型,导致类型不匹配。
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-from.html 群里面有个小伙伴问了一个关于两个有Dependence关系的Picklist字段如何在Apex中通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个 如下图,我们在Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个在配置中清晰可见,如何在代码中获取呢? ? Type的Picklist field Values,是不是也可以将中间页面写两个apex:inputField设置级联关系,通过参数将需要读取的内容获取出来,从而实现需求? 每一个validFor属性存储了一组的Bits,每个bit对应着一个Control Field Picklist Value。
Picklist Value 需要有清晰的逻辑关于不同的 Record Type所可以设置的 Picklist Value的值,如果Picklist Value进行了缩减,需要检查一下历史数据中的值是否有在范围之外的 ,如果存在并且需求确定,需要将将这个字段的 Restrict选项反选,上线后也要手动检查所有的 Picklist Values是否和预期相同。 如果系统中有获取当前表的 Picklist Value或者列表检索等,需要检查并且做出适当的逻辑修改。 values(一些picklist values相同并且全部选择) 针对上述需求部署的情况下,metadata xml list可以使用下述进行思考。 检查Record Type的picklist values 2. 检查 Page Layout Assignment 3.
类型字段的picklist value。 我们接触apex知道,picklist 字段获取可以使用两种方式,基于record type方式获取某个record type的picklist values以及获取picklist类型字段的所有的values 下面的demo我们来获取account中的industry的picklist values。 3. getPicklistValuesByRecordType:此方法用于获取某个对象,某个record type的所有的picklist 的values,这些picklist values封装在一个 比如一个picklist字段,我们有国际化操作,针对picklist value可能是英文,但是我们对其中文进行translation,那么针对语言为中文的客户,getFieldValue获取的是picklist
类型字段,可以通过此方法返回PicklistEntry实例对象用来获取PickList的value。 (七)Schema.PicklistEntry 此类中方法用于获取PickList的value数组。 主要方法如下: public String getLabel():返回这个picklist的item的显示名称; public String getValue():返回这个picklist的item的VALUE 的item是否为picklist的默认值,如果是则返回true,否则返回false。 注意:一个PickList只允许有一个默认值。
我们在Goods__c表中有一个字段类型为Picklist,字段值有以下内容: ? 出现这个现象的原因为针对Picklist字段进行ORDER BY 排序时,走的是字段的排序顺序,而不是根据从a到z排序。 ? 我们将这个字段reorder,重新排序后如下: ?
接下来主要描述Lookup Relationship,Master-detail Relationship,Picklist这三种类型配置。 1)PickList PickList声明一组数据,类似HTML中的选择框。通常用于确定的内容选择,比如学生表可以声明学生的学历--Education__c字段。 所以这个字段可以声明为PickList类型字段。即此字段适用于值是确定范围的,有穷的情况。 声明PickList操作步骤如下: 1.如果存在Student表情况下,在setup-->create-->Objects下找到Student,点击进入。 将Value选择第二个Enter Value ,并在输入框中输入相应值,如图1所示; 4.一直选择Next,最后点击Save按钮新增PickList类型字段。
Case 类型在Salesforce中使用标准字段 Type进行维护,类型为Picklist. Case状态: 在跟踪状态时也会有不同的值,这个根据不同公司会有不同的值。 Case 状态在Salesforce中使用标准字段 Status进行维护,类型为 Picklist. Case Priority 在salesforce中使用Priority进行维护,类型为Picklist。 Case Origin: 客户可以通过网站/ 电话/ email 或者其他途径提case,在salesforce中使用 Origin进行维护,类型为 Picklist. Case Reason在salesforce中使用 Reason 进行维护,类型为Picklist。