在APEX中如何获取 Picklist 的Label Value 而不是 API Value
当我们在 Apex 中查询对象上的picklist字段时,我们总是会获取它的 API 值,但是如果您想要选项的Label,那么可以使用 ‘toLabel’。
假设我们在“Contact”对象上有一个名为“Status__c”的自定义字段,那么下面的查询将为您提供所需的值
Contact con = [SELECT Id, toLabel(Status__c) FROM Contact WHERE Id = ‘1234567890’];
System.debug(‘Label value of picklist>>’+ con.Status__c);
注意!!如果在 APEX trigger中获取label,那么这将不起作用,仍将获得选项的 API 值,需要使用相同的模式描述。可以参照下面的代码片段。
Contact con = [SELECT Id, Status__c FROM Contact WHERE Id = ‘1234567890’];
//To get picklist entries
List<Schema.PicklistEntry> values = Contact. Status__c.getDescribe().getPicklistValues();
Map<String,String> statusApiToLabelMap = new Map<String,String>();
For(Schema.PicklistEntry sp : values){
//Map to hold Picklist API as Key and Picklist Label as Value
statusApiToLabelMap.put(sp. getValue(), sp. values.getLabel());
}
System.debug(‘Label value of picklist>>’+ statusApiToLabelMap .get(con.Status__c));
PicklistEntry 的方法:
- values.getValue()
- values.getLabel()
- values.isActive()
- values.isDefaultValue()