+ Start a Discussion

Problem creating dependent picklist in Visual Force



I am trying to create a simple dependent picklist in Visual force. I am using apex: actionsupport tag to re-render the dependent picklist and select the specific values for it on the basis of selected value from main picklist.


Mani Picklist:  Project Office

Dependent Picklit : Building  


The issue I am facing is when I change the value of Main picklist (Project Office) it is re-rending the other picklist. But in getter of the child picklist( getTestBuildinglist() )  I am not getting the new selected value. So in getTestBuildinglist()  function the value of SelectProjectOffices is always ‘Select One’ . Idealy it should be the selected vale(‘ABC’ or ‘XYZ’ whatever user select from the Main picklist)


Any idea what I am missing or any other approach which can help me to implement this.


Here is the sample code


*************************VF PAGE*******************************

<apex:page controller="testController_Rajan" cache="false" id="myPage" showHeader="false" sidebar="false" standardStylesheets="true">  
 <apex:form id="myform">
 <apex:pageBlock id="mypageBlock">
 <!-- Creating Project Office picklist and binded with SelectProjectOffice contoller -->
 <apex:pageblockSection ><apex:pageBlockSectionItem >
<apex:outputLabel value="Project Office" for="ddProjectOffice"></apex:outputLabel>
<apex:selectList value="{!selectProjectOffices}" id="ddProjectOffice" size="1" required="true">
                        <apex:actionSupport event="onchange"  reRender="ddbuilding" immediate="true" />
                        <apex:selectOptions value="{!TestProjectOfficeslist}"/>

<apex:pageBlockSectionItem >
                    <apex:outputLabel value="Building" for="ddbuilding"></apex:outputLabel>
                    <apex:selectList value="{!Buildingvalue}" disabled="{!EnabledBuilding}"  id="ddbuilding" size="1" required="true">
                    <apex:selectOptions value="{!TestBuildinglist}"/>



**************************APEX CLASS******************************************


public class testController_Rajan {

    public string Buildingvalue{ get; set; }
    public string selectBuilding;
    public String SelectProjectOffices;
    public List<SelectOption> optionBuliding=new List<SelectOption>();
    public boolean EnabledBuilding{get; set;}
    List<SelectOption> options = new List<SelectOption>();

            /*Getting values of Status picklist  of Case Object*/
            public List<SelectOption> getTestProjectOfficeslist()
               options.add(new SelectOption('Select One','Select One'));//set default value
               options.add(new SelectOption('ABC','ABC'));//set default value
               options.add(new SelectOption('XYZ','XYZ'));//set default value
               for(ProjectOfficeCusList__c poff : ProjectOfficeCusList__c.getAll().values())  
               options.add(new SelectOption(poff.name,poff.name));
               SelectProjectOffices='Select One';
               return options;
          public List<SelectOption> getTestBuildinglist()           
               System.Debug(getSelectProjectOffices()); // Here is the issue. It is not providing the selected Value  
               optionBuliding.add(new SelectOption(SelectProjectOffices,SelectProjectOffices));//set default value
               if(SelectProjectOffices!='Select One')
               for(Product2 p :[select p.Building__c  from Product2 p where p.Project_Office__c=:SelectProjectOffices])
               optionBuliding.add(new SelectOption(p.Building__c, p.Building__c));
               return optionBuliding;
            public String getSelectProjectOffices() {
            return this.SelectProjectOffices;
            public void setSelectProjectOffices(String S) {
                this.SelectProjectOffices= S;
            public Void setEnabledBuilding(Boolean b) {




Any help is appreciated.




Best Answer chosen by Admin (Salesforce Developers) 
Hi, I have see your code, you are using . Remove the immediate attribute from action support. Your code will run fine on removal of this attribute.

All Answers

Hi, I have see your code, you are using . Remove the immediate attribute from action support. Your code will run fine on removal of this attribute.
This was selected as the best answer

 Santoshi, you are absolutely correct. I have removed and its working perfect. Thank you.



Rajan Jasuja