Get Picklist Values in Salesforce Lightning Component From a Common Apex Function
See below the code example to get Picklist Values in Salesforce Lightning Component from a Common Apex Function:
CommonPicklist.cmp
<aura:component controller="CommonPicklistController"> <aura:attribute name="ObjectName" type="String" default="Opportunity" access="global"/> <!-- Object Name as String--> <aura:attribute name="Type" type="String" default="Type" access="global"/> <!-- Field Name as String--> <aura:attribute name="Stage" type="String" default="StageName" access="global"/> <!-- Field Name as String--> <aura:attribute name="Lead_Source" type="String" default="LeadSource" access="global"/> <!-- Field Name as String--> <aura:attribute name="TypePicklist" type="String[]" /> <!-- Picklist Values of Type Field --> <aura:attribute name="StagePicklist" type="String[]" /> <!-- Picklist Values of StageName Field --> <aura:attribute name="LeadSourcePicklist" type="String[]" /> <!-- Picklist Values of LeadSource Field --> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <lightning:select label="Type"> <aura:iteration items="{!v.TypePicklist}" var="val"> <option value="{!val}"> {!val}</option> </aura:iteration> </lightning:select> <lightning:select label="Stage"> <aura:iteration items="{!v.StagePicklist}" var="val"> <option value="{!val}"> {!val}</option> </aura:iteration> </lightning:select> <lightning:select label="Lead Source"> <aura:iteration items="{!v.LeadSourcePicklist}" var="val"> <option value="{!val}"> {!val}</option> </aura:iteration> </lightning:select> </aura:component>
Don't forget to check out: Top Salesforce Lightning Components to Improve Functionality
CommonPicklistController.js
({ doInit: function(component, event, helper) { helper.fetchTypePicklist(component); // fetches PickList Values of Type Field helper.fetchStagePicklist(component); // fetches PickList Values of Stage Field helper.fetchLeadSourcePicklist(component); // fetches PickList Values of LeadSource Field }, })
CommonPicklistHelper.js
({ fetchTypePicklist : function(component){ var action = component.get("c.getPicklistvalues"); action.setParams({ 'objectName': component.get("v.ObjectName"), 'field_apiname': component.get("v.Type"), 'nullRequired': true // includes --None-- }); action.setCallback(this, function(a) { var state = a.getState(); if (state === "SUCCESS"){ component.set("v.TypePicklist", a.getReturnValue()); } }); $A.enqueueAction(action); }, fetchStagePicklist : function(component){ var action = component.get("c.getPicklistvalues"); action.setParams({ 'objectName': component.get("v.ObjectName"), 'field_apiname': component.get("v.Stage"), 'nullRequired': false }); action.setCallback(this, function(a) { var state = a.getState(); if (state === "SUCCESS"){ component.set("v.StagePicklist", a.getReturnValue()); } }); $A.enqueueAction(action); }, fetchLeadSourcePicklist : function(component){ var action = component.get("c.getPicklistvalues"); action.setParams({ 'objectName': component.get("v.ObjectName"), 'field_apiname': component.get("v.Lead_Source"), 'nullRequired': true }); action.setCallback(this, function(a) { var state = a.getState(); if (state === "SUCCESS"){ component.set("v.LeadSourcePicklist", a.getReturnValue()); } }); $A.enqueueAction(action); }, })
CommonPicklistController.apxc
public with sharing class CommonPicklistController { @AuraEnabled public static List<String> getPicklistvalues(String objectName, String field_apiname,Boolean nullRequired){ List<String> optionlist = new List<String>(); Map<String,Schema.SObjectType> gd = Schema.getGlobalDescribe(); Map<String, Schema.SObjectField> field_map = gd.get(objectName.toLowerCase()).getDescribe().fields.getMap(); List<Schema.PicklistEntry> picklistValues = field_map.get(field_apiname).getDescribe().getPickListValues(); if(nullRequired == true){ optionlist.add('--None--'); } for (Schema.PicklistEntry pv : picklistValues) { optionlist.add(pv.getValue()); } return optionlist; } }
Learn more about: Salesforce Visualforce Vs Salesforce Lightning Component
CommonPicklistApp
<aura:application extends="force:slds"> <c:CommonPicklist/> </aura:application>