Fetch Picklist value in LWC using Schema class

 Create the Apex Class:


public with sharing class lwcPicklistController {

    

    //fetch picklist values from  SOBJECT

    @AuraEnabled(cacheable=true)

    public static List < customValueWrapper > pickListValueDynamically(sObject customObjInfo, string selectPicklistApi) {

       Schema.DescribeSObjectResult objDescribe = customObjInfo.getSObjectType().getDescribe();     

       map < String, Schema.SObjectField > customFieldMap = objDescribe.fields.getMap();      

       list < Schema.PicklistEntry > custPickValues = customFieldMap.get(selectPicklistApi).getDescribe().getPickListValues();

       list < customValueWrapper > customObjWrapper = new list < customValueWrapper > ();

       for (Schema.PicklistEntry myCustPick: custPickValues) {

         customValueWrapper selectOptionValueWrapper = new customValueWrapper();

            selectOptionValueWrapper.custFldlabel = myCustPick.getLabel();

            selectOptionValueWrapper.custFldvalue = myCustPick.getValue();

           customObjWrapper.add(selectOptionValueWrapper);

       }

       

       return customObjWrapper;

 

     }

     // wrapper class 

       public with sharing class customValueWrapper {

         @auraEnabled public string custFldlabel {get;set;}

         @auraEnabled public string custFldvalue {get;set;}

       }

}


Create LWC

//ComponentName.html///

<template>

    <lightning-card title="Dynamically picklist values from Sobject" icon-name="custom:custom25">

       <div class="slds-p-horizontal--medium">

        <label class="slds-form-element__label">Industry</label>

        <div class="slds-form-element__control">

          <div class="slds-select_container">

            <select class="slds-select" onchange={selectOptionChanveValue}>

                  <option value="">---None---</option>                

                    <template for:each={selectTargetValues.data} for:item="selectOptItem">

                       <option key={selectOptItem.custFldvalue} value={selectOptItem.custFldvalue}>

                         {selectOptItem.custFldlabel}

                       </option>

                  </template>

            </select>

          </div>

        </div>

        <br/>

         <b>Selected Picklist Value Is:-</b> <span style="color:brown; font-weight:bold;"> {picklistVal}</span>

       </div> 

      


<br/><br/>

    </lightning-card>

</template>


//JSFILE Code


import { LightningElement,track,wire } from 'lwc';

import pickListValueDynamically from '@salesforce/apex/lwcPicklistController.pickListValueDynamically';


export default class FetchPicklistValueLwc extends LightningElement {

 @track picklistVal;


@wire(pickListValueDynamically, {customObjInfo: {'sobjectType' : 'Account'},

selectPicklistApi: 'Industry'}) selectTargetValues;

    

  selectOptionChanveValue(event){       

       this.picklistVal = event.target.value;

   }  

   

}


//MetaXML FIle


<?xml version="1.0" encoding="UTF-8"?>

<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">

    <!-- The apiVersion may need to be increased for the current release -->

    <apiVersion>52.0</apiVersion>

    <isExposed>true</isExposed>

    <masterLabel>Dynamic Picklist Value</masterLabel>

    <targets>

        <target>lightning__AppPage</target>

        <target>lightning__RecordPage</target>

        <target>lightning__HomePage</target>

    </targets>

</LightningComponentBundle>


Push the change on org and then add the component in Record Page and verify the things





Comments

Popular Post

Use Of Standard Set Of Controller

Send SMS Using Batch Class in Salesforce

Show Hyper Link On Add Error in Salesforce Trigger