Wednesday 29 January 2014

Custom Dependent Picklist
 
You can create a custom dependent pick list in visualforce using the code below.

Vf page :

<apex:page controller="customPicklistController">
    <apex:form >
        <apex:pageBlock title="Custom Dependent Picklist">
            <apex:pageBlockSection columns="1">
               
                <apex:outputLabel value="State">
                 <apex:selectList required="true" multiselect="false" size="1" label="State" value="      {!selectedValue}" id="state">
                     <apex:selectOptions value="{!State}"></apex:selectOptions>
                        <apex:actionSupport event="onchange" reRender="city"/>
                    </apex:selectList>
                </apex:outputLabel>
               
                <apex:outputLabel value="Cities">
                   <apex:selectList required="true" multiselect="false" size="1" label="Cities" id="city">
                        <apex:selectOptions value="{!Cities}">
                        </apex:selectOptions>
                    </apex:selectList>
                </apex:outputLabel>
               
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page> 

 

 
Controller :

public class customPicklistController {
   
    public String selectedValue { get; set; }
    public String selectedCity {get; set; }
       
    public customPicklistController() { }
   
    // Getting values for first picklist
    public List<SelectOption> getState() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('None', 'None'));
        options.add(new SelectOption('Maharashtra', 'Maharashtra'));
        options.add(new SelectOption('Rajasthan', 'Rajasthan'));
        options.add(new SelectOption('Karnataka', 'Karnataka'));
        return options;
    }
   
    public void setState(String s){
        this.selectedValue = s;
    }
       
    //Getting values for seconf picklist
    public List<SelectOption> getCities() {
        List<SelectOption> options = new List<SelectOption>();
        options.add(new SelectOption('None', 'None'));
        if(selectedValue == 'Karnataka') {
            options.add(new SelectOption('bangalore', 'bangalore'));
            options.add(new SelectOption('mysore', 'mysore'));
        }
       
        if(selectedValue == 'Rajasthan') {
            options.add(new SelectOption('jaipur', 'jaipur'));
            options.add(new SelectOption('jodhpur', 'jodhpur'));
        }
       
        if(selectedValue == 'Maharashtra') {
            options.add(new SelectOption('pune', 'pune'));
            options.add(new SelectOption('mumbai', 'mumbai'));
        }
       
        return options;
    }
   
    public void setCities(String s){
        this.selectedCity =s;
    }
   
}