本篇引用以下三个链接:

http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1

https://github.com/abhinavguptas/Multi-RecordType-Sobject-Picklist-Describer

http://bobbuzzard.blogspot.com/2012/01/record-type-picklist-values.html

我们知道,record type可以设置不同的profile针对类型为picklist的字段显示不同的values,但是apex的API中,通过schema取出的Picklist的values为全部的值,并不能直接通过指定的方法取出指定的values。通过上述三个链接可以很好的解决。

原理图如下:

用法:

1.通过Record ID获取其对应的record type name 以及类型为picklist的field values。

2.通过sObjectType,Record Type Name以及field Name 获取类型为picklist的field values。

其实,每个customer object都会有一个recordtype字段,用来记录当前的record的record type id。所以如果仅仅想在页面上通过record id获取当前record 具有的field 的picklist values,只需要用<apex:inputField>来盛装此字段即可.inputField可以根据字段的类型显示不同的样式。

PicklistController:通过URL传递的不同参数进行不同的处理,点击按钮后显示所选的项的value

public with sharing class PicklistController {public Goods__c goods {get;set;}public String pickListFieldName {get;set;}  public PicklistController() {Map<String, String> req = ApexPages.currentPage().getParameters();PageReference ref = ApexPages.currentPage();//设置当前的页面开发模式开启//ref.getParameters().put('core.apexpages.devmode.url', '1');String goodsId = req.get('id');this.pickListFieldName = req.get('picklistFieldName'); String recordTypeId = req.get('recordTypeId');goods = new Goods__c();if(goodsId != null) {goods = [SELECT GoodsBrand__c, RecordTypeId FROM Goods__c where Id=:goodsId limit 1];}if(goods.RecordTypeId == null) {goods.put('RecordTypeId', recordTypeId);}}public void showSelectedValue() {ApexPages.addMessage(new ApexPages.Message(ApexPages.SEVERITY.INFO,goods.GoodsBrand__c));}
}

 PickListDemoPage:显示相关record type对应的picklist items以及button显示所选择的picklist的value值

<apex:page controller="PicklistController"showHeader="false" sidebar="false" ><apex:form ><apex:pageMessages /><apex:inputField value="{!goods[pickListFieldName]}"/><apex:commandButton action="{!showSelectedValue}" value="显示所选值"/></apex:form></apex:page>

效果:

1.通过record id获取此record的record type应该具有的picklist values

2.通过record type id获取相关字段应该具有的picklist values

总结:如果需要在apex中获取相关的picklist values然后进行相关后续处理可以参看上方引用的链接以及源码,如果只是想要页面中显示相关使用record type的picklist values,则可以对相关object配置相关的record type id,前台使用apex:inputField即可。篇中有错误欢迎指出,有问题欢迎留言。



转载于:https://www.cnblogs.com/zero-zyq/p/6251173.html

salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...相关推荐

  1. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  2. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  3. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

  4. jQuery学习(十二)—jQuery中对象的查找方法总结

    jQuery学习(十二)-jQuery中对象的查找方法总结 一.find方法 作用:在元素1中查找元素2,类似于选择器中的后代选择器 格式:元素1.find(元素2),元素2为CSS选择器或者jQue ...

  5. python血条游戏代码_零基础快速学十二课Python完整游戏代码,使用「格式符%」来处理...

    十二课Python不同数据类型的拼接方式,使用[格式符%]来处理 不过它还没有全部解决:打印出每局结果,三局两胜打印最终战果.这就是版本3.0需要做的事情. 打印战果,三局两胜. 对比2.0版本,在3 ...

  6. 六十二、Js中的冒泡和捕获点击事件和Vue组件绑定原生事件

    2020/10/18 . 周日.今天又是奋斗的一天. @Author:Runsen @Date:2020/10/18 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是 ...

  7. Go语言学习笔记十二(反射的类型对象)

    Go语言的反射 在G语言程序中可以通过reflect包的TypeOf()函数获取任意值的类型对象,程序可以通过类型对象访问任意值的类型信息. package main import ("fm ...

  8. salesforce 零基础学习(四十二)简单文件上传下载

    项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...

  9. salesforce 零基础学习(五十四)常见异常友好消息提示

    异常或者error code汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_con ...

最新文章

  1. 推荐开发工具系列之--LinrF5(自动刷新)
  2. Jenkins 创建Maven项目
  3. 我为什么用docker-compose来打包开发环境
  4. CSS行内元素和块级元素的水平居中,垂直居中,水平垂直居中实现
  5. 数据结构--树--线段树(Segment Tree)
  6. c语言创建文件的作用,c语言文件创建与建立
  7. 9月26日云栖精选夜读:阿里Java代码规约插件即将全球首发,邀您来发布仪式现场...
  8. 将文件或视频隐藏在图片里
  9. 机器学习-极大似然估计
  10. 小米高管:已投大量精力研发手机AI芯片,造不造还没定
  11. 实战react技术栈+express前后端博客项目(3)-- 后端路由、代理以及静态资源托管等配置说明...
  12. DataStructuresAndAlgorithm--字谜游戏
  13. iOS 5 故事板进阶(1)
  14. Tomcat7集群共享Session 基于redis进行统一管理
  15. ArcGIS中矢量裁剪栅格影像及影像合并【附练习数据下载】
  16. spark输出rdd数据_Spark中RDD的详解
  17. infiniDB在linux下完成倒库
  18. 供应链计划的五个步骤,你知道吗?
  19. 假显卡测试软件,GPU-Z 2.26.0发布:可检测多款假冒显卡
  20. 解决CPU风扇噪音故障

热门文章

  1. python的for循环累加_在python中将6 for循环累计和矢量化
  2. jax ws ri 生成java类_JAX-WS(一)之使用wsgen从Java创建简单的WebService
  3. 计算机学业水平测试题及答案初中,初中信息技术学业水平考试试题30号试题.doc...
  4. java string字节数组_java(基本类型或者String字符串)与(字节数组)相互转换
  5. awk -f 分隔符 命令_详解!!!awk参见使用命令
  6. 【Centos 7】【Docker】 安装 kafka
  7. Spring RMI错误:java.rmi.ConnectException: Connection refused to host: 127.0.0.1
  8. 微课视频小学用计算机画画,初识电脑绘画
  9. android分辨率对应关系,android各dpi与分辨率的对应关系
  10. html5如何划分区域,10.4 51单片机 RAM 区域的划分