Get Picklist Values Dynamically In Lightning Radio Group Component
In below example I’m loading Account object Industry picklist field values in Lightning Radio Group.
Apex Controller:
public class SampleController { @AuraEnabled //Save Account Data Public static void createAccount(Account objacc){ try{ //Insert Account Record insert objacc; }catch(Exception e){ //throw exception message throw new AuraHandledException(e.getMessage()); } finally { } } @AuraEnabled //get Account Industry Picklist Values public static Map<String, String> getIndustry(){ Map<String, String> options = new Map<String, String>(); //get Account Industry Field Describe Schema.DescribeFieldResult fieldResult = Account.Industry.getDescribe(); //get Account Industry Picklist Values List<Schema.PicklistEntry> pList = fieldResult.getPicklistValues(); for (Schema.PicklistEntry p: pList) { //Put Picklist Value & Label in Map options.put(p.getValue(), p.getLabel()); } return options; } }
Lightning Component:
<!--Sample.cmp--> <aura:component controller="SampleController" implements="flexipage:availableForAllPageTypes,force:appHostable"> <!--Declare Attributes--> <aura:attribute name="industryMap" type="Map"/> <aura:attribute name="acc" type="Account" default="{'sobjectType':'Account', 'Name': '', 'AccountNumber': '', 'Email': '', 'Phone': '', 'Industry': ''}"/> <!--Declare Handler--> <aura:handler name="init" value="{!this}" action="{!c.doInit}"/> <!--Component Start--> <div class="slds-m-around--xx-large"> <div class="container-fluid"> <div class="form-group"> <lightning:input name="accName" type="text" required="true" maxlength="50" label="Account Name" value="{!v.acc.Name}" /> </div> <div class="form-group"> <lightning:input name="accNumber" type="text" required="true" maxlength="10" label="Account Number" value="{!v.acc.AccountNumber}" /> </div> <div class="form-group"> <lightning:input name="accEmail" type="email" required="true" maxlength="100" label="Email" value="{!v.acc.Email}" /> </div> <div class="form-group"> <lightning:input name="accPhone" type="phone" required="true" maxlength="10" label="Phone" value="{!v.acc.Phone}" /> </div> <div class="form-group"> <!--Lightning radio group component--> <lightning:radioGroup name="radioGroup" label="Industry" required="true" options="{!v.industryMap}" value="{!v.acc.Industry}" type="radio"/> </div> </div> <br/> <lightning:button variant="brand" label="Submit" onclick="{!c.handleAccountSave}" /> </div> <!--Component End--> </aura:component>
Lightning Component Controller:
({ //Load Account Industry Picklist doInit: function(component, event, helper) { helper.getIndustryPicklist(component, event); }, //handle Account Save handleAccountSave : function(component, event, helper) { helper.saveAccount(component, event); }, //handle Industry Picklist Selection handleCompanyOnChange : function(component, event, helper) { var indutry = component.get("v.acc.Industry"); alert(indutry); } })
Lightning Component Helper:
({ //get Industry Picklist Value getIndustryPicklist: function(component, event) { var action = component.get("c.getIndustry"); action.setCallback(this, function(response) { var state = response.getState(); if (state === "SUCCESS") { var result = response.getReturnValue(); var industryMap = []; for(var key in result){ industryMap.push({label: result[key], value: key}); } component.set("v.industryMap", industryMap); } }); $A.enqueueAction(action); }, //handle Account Save saveAccount : function(component, event) { var acc = component.get("v.acc"); var action = component.get("c.createAccount"); action.setParams({ objacc : acc }); action.setCallback(this,function(response){ var state = response.getState(); if(state === "SUCCESS"){ alert('Record is Created Successfully'); } else if(state === "ERROR"){ var errors = action.getError(); if (errors) { if (errors[0] && errors[0].message) { alert(errors[0].message); } } }else if (status === "INCOMPLETE") { alert('No response from server or client is offline.'); } }); $A.enqueueAction(action); } })