salesforce 零基础开发入门学习(七)PickList的value值获取
之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据。通过sObject直接取恐怕很难做到,因为他只会显示一个值。这时候就要用到Schema命名空间中的类与方法以及System命名空间下的Schema类来实现。
Schema类
Schema命名空间和Schema类不是同一个概念。Schema类属于System命名空间下,Schema命名空间包含很多类处理Schema元数据信息。
Schema类的方法包含schema 信息描述。
Schema类主要方法如下:
- public static Map<String, Schema.SObjectType> getGlobalDescribe():
返回一个map,这个map表示所有的sObject名称(key)到sObject tokens(value)的map,其中tokens可以为在你的项目中标准的和自定义的Object对象。
这个map具有以下的特征:
1.动态的,根据权限在运行时生成sObject;
2.sObject名称不区分大小写;
3.key可以映射出Object是否是一个自定义对象;
4.key如果是标准的sObject则不需要前缀,否则需要加命名空间的前缀。
- public static List<Schema.DescribeDataCategoryGroupResult> describeDataCategoryGroups(String sObjectNames)
返回一个与指定的对象关联的类别组列表.
- public static List<Schema.DescribeSObjectResult> describeSObjects(List<String> sObjectTypes)
返回指定的sObject的描述信息。通常可以先调用getGlobalDescribe()方法获取组织中所有的对象列表,然后通过迭代遍历使用此方法获取指定的单个的sObject的元数据信息。
Schema命名空间
Schema命名空间下的类和方法用来处理schema 元信息(metadata),当实例化或者使用Schema类或者方法的时候,可以省略Schema命名空间。
以下的代码中封装了PickList的values的值的获取方法,形参分别为需要获取的sObjectName以及字段的名称,如果不存在指定的sObjectName或者字段名称没有设置返回值,else代码块中,需要的童鞋可以自行设定不存在情况下返回的内容。Schema命名空间中主要类的学习可以参照代码中的类查看相关方法。
public class PickListValuesUtil {
/*
通过sObjectName和指定字段获取PickList的value值
*/
public static Map<String, object> getPicklistValues(String sObjectName, String sFieldName){
Map<String, object> picValues= new Map<String, object>();
Map<String, Schema.SObjectType> sObjectDescribeMap = Schema.getGlobalDescribe();
if (sObjectDescribeMap.containsKey(sObjectName)) {
Map<String, Schema.SobjectField> sObjectFieldsMap =
sObjectDescribeMap.get(sObjectName).getDescribe().fields.getMap();
if (sObjectFieldsMap.containsKey(sFieldName)) {
Schema.DescribeFieldResult sObjectFieldDescribe = sObjectFieldsMap.get(sFieldName).getDescribe();
List<Schema.PicklistEntry> lPickEntryList = sObjectFieldDescribe.getPicklistValues();
for (Schema.PicklistEntry tPicklistEntry : lPickEntryList) {
picValues.put(tPicklistEntry.getValue(), new Map<String,object>{
'value' => tPicklistEntry.getValue(),
'isActive' => tPicklistEntry.isActive(),
'isDefaultValue' => tPicklistEntry.isDefaultValue(),
'label' => tPicklistEntry.getLabel()
});
}
} else {
//TODO 不存在此字段的执行
}
} else {
// TODO 不存在此sObject的执行
}
return picValues;
}
}
调用方式如下所示:
Student__c具有Education__c字段,并且声明类型为PickList.value值如图1所示。通过输出Map用来更好的查看Map内容。
Map<String,object> educationValues = SchemaUtil.getPicklistValues('Student__c','Education__c');
System.debug(educationValues);
输出结果Map集合如下所示:
{
初中={isActive=true, isDefaultValue=false, label=初中, value=初中},
博士生={isActive=true, isDefaultValue=false, label=博士生, value=博士生},
大学={isActive=true, isDefaultValue=false, label=大学, value=大学},
小学={isActive=true, isDefaultValue=false, label=小学, value=小学},
教授={isActive=true, isDefaultValue=false, label=教授, value=教授},
研究生={isActive=true, isDefaultValue=false, label=研究生, value=研究生},
高中={isActive=true, isDefaultValue=false, label=高中, value=高中}
}
如果想获取PickList的所有Value值,只需要取出集合后,通过Map的keySet()方法便可以获取所有value内容,如果需要获取相应的Entry信息,可以通过Map的value值。
本篇只是通过封装的方法简单讲解获取PickList的value值,如果想要详细了解Schema命名空间以及System命名空间下的Schema类以及System命名空间下的sObject类,请查看官方API文档,如果本篇有写错的地方欢迎批评指正。有疑问可以下方留言相互交流。

图1
salesforce 零基础开发入门学习(七)PickList的value值获取的更多相关文章
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable 本篇知识参考:https://developer.salesforce.com/trailhead/for ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...
- salesforce 零基础开发入门学习(十一)sObject及Schema深入
sObject在salesforce中占有举足轻重的位置,除了在数据库中数据以外,我们还应该关心一下他的元信息.元信息封装在Schema命名空间内. 作为面向对象语言,我们可以畅想一下如果我们是设计人 ...
- salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)
本文参考官方的formula介绍PDF:https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_usefu ...
随机推荐
- Python解决八皇后问题
最近看Python看得都不用tab键了,哈哈.今天看了一个经典问题--八皇后问题,说实话,以前学C.C++的时候有这个问题,但是当时不爱学,没搞会,后来算法课上又碰到,只是学会了思想,应该是学回溯法的 ...
- Fire
Fire 分析: 首先,明确题意:b1,b2,--,bn 交换为b2,--,bn,b1,但这并不是意味着只能从b1开始交换,(这点从样例中可以看出),并且也不意味着交换的必须是连续的一串,可以是几个单 ...
- [转]redis-cli的一些有趣也很有用的功能
本文转至:http://www.tuicool.com/articles/Yvqm2ev http://mdba.cn/category/redis/ redis-cli我们最常用的两个参数就是-h. ...
- js创建对象的几种方式
/** * 顺便重温一下对象的创建方式 * 代码简单说明问题就好 * 概念性的东西这里就不提了,只加上自己简单理解 */ /** * 工厂模式,就是将手动的创建细节封装在一个方法里, * return ...
- 从up6-down2升级到down3
概述: 添加存储过程down_f_process.sql,down_f_del.sql 更新DnFile.updateProcess,DnFile.Delete 更新down.js 更新down.fo ...
- Win7 关闭Window update
1.设置注册表关闭自动更新 按组合键“windows+r”,打开“运行”栏,输入“regedit”,打开注册表找到下面的路径HKEY_CURRENT_USER\Software\Microsoft\W ...
- HashMap LinkedHashMap源码分析笔记
MapClassDiagram
- (一)读取PCD文件
下面是一个简单的读取PCD文件并显示的代码: #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/p ...
- [poi2010]Hamsters
题意:Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算.现在Tz想好了要出现多少个名字,请你求出最短的 ...
- 读入一个c程序,并按字母表顺序分组打印变量名,每组前N个字符相同(TCPL 练习6-2)
在建立结构tnode的过程中,我们没有预设门槛.这道题目就设置了门槛,必须根据前N个字符来进行分组,于是排除了长度小于N的变量,以便减轻负担. 因为要求对变量名分组打印,组别理所应当地应该按照至少是升 ...