function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
VinslikeuVinslikeu 

Problem creating dependent picklist in Visual Force

 

Dependent picklist values are not fetching.

 

How to make dependent field uneditable if parent field is not selected and if parent field is selected dependent field should show appropriate list values?

Please help me out from this.. Thanks!

 

///////////////////VF//////////////////////////////

              <apex:pageBlockSection title="Header" columns="4">
                <b>State:</b>
                <apex:selectList id="sta" value="{!SelectedState}" size="1">
                    <apex:selectOptions value="{!StateList}" />
                </apex:selectList>
                <!--  required="true" id="state" value="{!state}" /> -->
                <b>Region:</b>
                <apex:selectList id="rgn" value="{!SelectedRegion}" size="1" >
                    <apex:selectOptions value="{!RegionList}" />
                </apex:selectList>

 

 

///////////////////////Controller////////////////////////

    public String SelectedState { get; set; }
    public String SelectedRegion { get; set; }

    private final UV_Account__c a;
    public set<SelectOption> StateList{
    get{
            set<SelectOption> st= new set<SelectOption>();
             st.add(new SelectOption('','- None -'));
            List<UV_Account__c> lFINAL = New List<UV_Account__c>();
            list<UV_Account__c> cc=[select State__c from UV_Account__c order by Name];
            Set<String> sNames = New Set<String>();
            for (UV_Account__c c : cc){
            if (sNames.Contains(c.State__c) == FALSE){
               sNames.add(c.State__c);
               lFINAL.add(c);
        }
        }
            
            for (UV_Account__c fc : lFINAL){
            st.add(new SelectOption(fc.id,fc.State__c));
              }
            
            return st;
       }
     set; }

    public list<SelectOption> RegionList{
    get{
            list<SelectOption> st= new list<SelectOption>();
            st.add(new SelectOption('','- None -'));
            List<UV_Account__c> lFINAL = New List<UV_Account__c>();
            list<UV_Account__c> cc=[select Region__c from UV_Account__c where State__c= :SelectedState];
            Set<String> sNames = New Set<String>();
            for (UV_Account__c c : cc){
            if (sNames.Contains(c.Region__c) == FALSE){
               sNames.add(c.Region__c);
               lFINAL.add(c);
        }
        }
            
            for( UV_Account__c fc : lFINAL)
            {
                st.add(new SelectOption(fc.id,fc.Region__c));
            }
            return st;
       }
     set; }

Taiki YoshikawaTaiki Yoshikawa

I think this will be good.

 

<apex:inputField value="{!UV_Account__c.State__c}" />
<apex:inputField value="{!UV_Account__c.Region__c}" />

 

VinslikeuVinslikeu

I dont think so..

Im trying to create dependent picklist..

Taiki YoshikawaTaiki Yoshikawa

Well...This method is how.

 

Page

<apex:page controller="DependentPicklistController">
    <apex:form >
        <apex:pageBlock >
            <apex:pageBlockSection >
                <apex:pageBlockSectionItem >
                    <apex:outputText value="{!$ObjectType.UV_Account__c.Label}" />
                    <apex:outputPanel >
                        <apex:selectList id="sta" value="{!selectedState}" size="1">
                            <apex:selectOptions value="{!StateItems}" />
                            <apex:actionSupport event="onchange" reRender="rgn"/>
                        </apex:selectList>
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
                <apex:pageBlockSectionItem >
                    <apex:outputText value="{!$ObjectType.UV_Account__c.Label}" />
                    <apex:outputPanel >
                        <apex:selectList id="rgn" value="{!selectedRegion}" size="1" disabled="{!IF(selectedState == '',true,false)}">
                            <apex:selectOptions value="{!RegionItems}" />
                        </apex:selectList>
                    </apex:outputPanel>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>

 Apex Class

public with sharing class DependentPicklistController {
    
    public String selectedState {get; set;}
    public String selectedRegion {get; set;}
    
    public DependentPicklistController() {
        this.selectedState = '';
        this.selectedRegion = '';
    }
    
    public List<SelectOption> getStateItems() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('','- None -'));
        
        DescribeFieldResult f = SObjectType.UV_Account__c.fields.State__c;
        List<PicklistEntry> entries = f.getPicklistValues();
        for (PicklistEntry e : entries) {
            if (e.isActive()) {
                options.add(new SelectOption(e.getValue(), e.getLabel()));
            }
        }
        return options;
    }
    
    public List<SelectOption> getRegionItems() {
        List<SelectOption> options = new List<SelectOption>();
        
        if (this.selectedState == 'A') {
            options.add(new SelectOption('A-1', 'A-1'));
            options.add(new SelectOption('A-2', 'A-2'));
            options.add(new SelectOption('A-3', 'A-3'));
        } else if (this.selectedState == 'B') {
            options.add(new SelectOption('B-1', 'B-1'));
            options.add(new SelectOption('B-2', 'B-2'));
            options.add(new SelectOption('B-3', 'B-3'));
        } else if (this.selectedState == 'C') {
            options.add(new SelectOption('C-1', 'C-1'));
            options.add(new SelectOption('C-2', 'C-2'));
            options.add(new SelectOption('C-3', 'C-3'));
        } else {
            options.add(new SelectOption('','- None -'));
        }
        
        return options;
    }
}

 

VinslikeuVinslikeu

Thanks Taiki!

it seems useful but it is not showing picklist values in Region picklist..