-
[Apex] 선택목록 필드의 option 값 가져오는 방법 - How to get option value of selection list fieldApex 2024. 8. 17. 21:17
1. 순서 및 로직
- 개체 가져오기
- Schema.getGlobalDescribe().get(개체명).getDescribe();
- return Schema.DescribeSObjectResult
- 개체의 필드 가져오기
- 개체명.fields.getMap().get(필드명).getDescribe();
- return Schema.DexcribeFieldResult
- 필드의 option 값 가져오기
- 필드명.getPicklistVales();
- return List<Schema.PicklistEntry>
- 필드 option 값 사용하기 ( Label 및 Vale)
- Schema.PicklistEntry.getLabel();
- Schema.PicklistEntry.getValue();
- return String
2. 예시 코드 확인
2-1 : 기본 코드 형식
String obj = '값 가져올 개체명 입력'; String fieldName = '값 가져올 필드명 입력'; Schema.DescribeSObjectResult objResult = Schema.getGlobalDescribe().get(obj).getDescribe(); Schema.DescribeFieldResult fieldResult = objResult.fields.getMap().get(fieldName).getDescribe(); List<Schema.PicklistEntry> picklistValues = fieldResult.getPicklistValues(); for (Schema.PicklistEntry picklistValue : picklistValues) { pickLabel = picklistValue.getLabel(); pickValue = picklistValue.getValue(); System.debug('pickLabel ===== ' + pickLabel); System.debug('pickValue ===== ' + pickValue); }
2-2 : 예시 코드
- 청구(Billing__c) 개체의 계산서발행방식(BillPublish__c) 선택 목록 필드 값 가져오기
//청구(Billing__c) 개체의 계산서발행방식(BillPublish__c) 선택 목록 필드 값 가져오기 Schema.DescribeFieldResult billPublishFieldResult = Billing__c.BillPublish__c.getDescribe(); List<Schema.PicklistEntry> billPublishValues = billPublishFieldResult.getPicklistValues(); String billPublishLabel = ''; String billPublishValue = ''; for (Schema.PicklistEntry picklistValue : billPublishValues) { billPublishLabel = picklistValue.getLabel(); billPublishValue = picklistValue.getValue(); billPublishType.add(new SelectOption(billPublishLabel, billPublishValue )); }
3. 추가 활용 - Combobox의 options 속성 값으로 활용
- 위에서 가져온 선택목록 필드의 option 값을
- Aura 및 LWC 컴포넌트의 combobox의 options 속성에 바로 사용하기
3-1 : 선택목록 필드의 픽 리스트 값 담을 이너 클래스 세팅
public class SelectOption { @AuraEnabled public String label { get; set; } @AuraEnabled public String value { get; set; } public SelectOption(String label, String value) { this.label = label; this.value = value; } }
3-2 : 해당 이너 클래스 활용하여 List 형식으로 값 담아서 컴포넌트로 전달
- selectOptions.add(new SelectOption(picklabel, pickValue);
String obj = '값 가져올 개체명 입력'; String fieldName = '값 가져올 필드명 입력'; Schema.DescribeSObjectResult objResult = Schema.getGlobalDescribe().get(obj).getDescribe(); Schema.DescribeFieldResult fieldResult = objResult.fields.getMap().get(fieldName).getDescribe(); List<Schema.PicklistEntry> picklistValues = fieldResult.getPicklistValues(); for (Schema.PicklistEntry picklistValue : picklistValues) { pickLabel = picklistValue.getLabel(); pickValue = picklistValue.getValue(); selectOptions.add(new SelectOption(pickLabel, pickValue)); //inner Class 활용 }
반응형 - 개체 가져오기