I have bee trying to render a field based on lead status value like 'Cancel/Rejected'. if i select Cancel value it should display field A, if i select value Reject it should display field B. please take a look at my visualforce page. What am i missing ? vfpage <apex:actionRegion > <apex:selectList id="chooseColor" value="{!str}" size="1"> <apex:selectOption itemValue="Approved" itemLabel="Approved"/> <apex:selectOption itemValue="Rejected" itemLabel="Rejected"/> <apex:selectOption itemValue="Cancel" itemLabel="Cancel"/> <apex:actionSupport event="onchange" reRender="col"/> </apex:selectList> </apex:actionRegion> </apex:column> <apex:column id="col" headerValue="Cancel Reason" > <apex:inputField value="{!le.Lead_Cancel}" /> </apex:column> <apex:column id="col2" headerValue="Reject Reason" > <apex:inputField value="{!le.Rejected_Details__c}" /> </apex:column> EDIT : MY CONTROLLER Parents component of selectList : {!str} public string str{get;set;} public NGCC_LeadMassList(ApexPages.StandardSetController Controller){ lstLead = [SELECT Id,Name,Status, Cancel_Reason__c,Rejected_Reason_c FROM Lead WHERE ID IN:Controller.getSelected()]; if(lstLead!=null && lstLead.size()>0){ for(Lead obj : lstLead){ obj.Status = 'Approved'; } } } public pageReference save1() { if(lstLead!=null) { for(Lead l:lstLead) { l.Status=str; records.add(l); } update records ; }