Apex PicklistEntryクラスを使って選択リストのすべての値を取得する方法

環境
Salesforce

構文
Schema.PicklistEntry オブジェクトは、getPicklistValues メソッドを
使用して Field Describe Result から返されます。
Schema.DescribeFieldResult df = Account.Industry.getDescribe();
List<Schema.PicklistEntry> P = df.getPicklistValues();
getLabel()
選択リスト内のこの項目の表示名を返します。

getValue()
選択リスト内のこの項目の値を返します。

サンプルコード

//選択リスト型の選択できる値を取得
public List<Schema.PicklistEntry> getPicklist(String sObjName, String fieldName){
    List<Schema.PicklistEntry> pickList;
    Schema.SObjectType sObjType = (Schema.SObjectType) Schema.getGlobalDescribe().get(sObjName);
    if(sObjType != null){
        Map<String, Schema.SObjectField> fieldmap = sObjType.getDescribe().fields.getMap();
        Schema.SObjectField f = (Schema.SObjectField) fieldmap.get(fieldName);
        if(f != null){
            Schema.DescribeFieldResult r = f.getDescribe();
            if (r.getType() == Schema.DisplayType.Picklist) {
                pickList = r.getPicklistValues();
                System.debug('値' + pickList);
            }
        }
    }
    return pickList;
}

List<Schema.PicklistEntry> picklist = getPicklist('OpportunityContactRole', 'Role');

for(Schema.PicklistEntry pick : picklist){
    System.debug('-----------------');
    System.debug('項目の表示名 :' + pick.getLabel());
    System.debug('項目の値 :' + pick.getValue());
    System.debug('ドロップダウンリストに項目を表示する必要:' + pick.isActive());
}

 

Apex

Posted by arkgame