set dynamically, Multiple Conditions for Rendered Attribute
set dynamically ,Rendering a page block section based on conditions
/*
Consider one custom object:- A__c
and A__c has fields :- First_Name__c, Last_Name__c, Age__c and Contact_Details__c
Suppose when user opted First then user can see 4 fields but When user opted Second then user can see only two fields.
*/
/*Code for Visualforce (Vf) page*/
<apex:page standardController="A__c" extensions="renderedconditionalcntrl" >
<apex:form >
<apex:pageBlock title="Rederer with condition">
<apex:outputLabel value="My Options"> </apex:outputLabel>
<apex:inputField label="My Option" value="{!Aobj.My_Option__c}">
<apex:actionSupport event="onchange" action="{!changeevent}" status="displaystatus" immediate="false" reRender="c1"/>
</apex:inputField>
<apex:pageBlockSection id="c1" columns="1" collapsible="false">
<apex:pageBlockSectionitem rendered="{! IF( isFirstDiv || isSecondDiv,true,false)}" >
<apex:outputLabel value="First Name"> </apex:outputLabel>
<apex:inputField label="First Name" value="{!Aobj.First_Name__c}" />
</apex:pageBlockSectionitem>
<apex:pageBlockSectionitem rendered="{! IF( isFirstDiv || isSecondDiv,true,false)}" >
<apex:outputLabel value="Last Name"></apex:outputLabel>
<apex:inputField label="Last Name" value="{!Aobj.Last_Name__c}" />
</apex:pageBlockSectionitem>
<apex:pageBlockSectionitem rendered="{!isFirstDiv}" >
<apex:outputLabel value="Age"></apex:outputLabel>
<apex:inputField label="Age" value="{!Aobj.Age__c}"/>
</apex:pageBlockSectionitem>
<apex:pageBlockSectionitem rendered="{!isFirstDiv}">
<apex:outputLabel value="Contact Number"></apex:outputLabel>
<apex:inputField label="Contact Number" value="{!Aobj.Contact_Details__c}"/>
</apex:pageBlockSectionitem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
/*Code for Apex class (extensions)*/
public with sharing class renderedconditionalcntrl {public boolean isFirstDiv{get;set;} //first flag
public boolean isSecondDiv{get;set;} //second flag
public A__c Aobj{get;set;}
public renderedconditionalcntrl(ApexPages.StandardController controller) {
Aobj = new A__c();
}
public void changeevent(){
System.debug('~~~~~~~~~~~~~~~~~~~~~' + Aobj.My_Option__c );
//Set your flag
isFirstDiv = false;
isSecondDiv = false;
if(Aobj.My_Option__c == 'First')
isFirstDiv = true;
else if(Aobj.My_Option__c == 'Second'){
isSecondDiv = true;
}
else {
isFirstDiv = false;
isSecondDiv = false;
}
}
}
Refer following Images for the above implementation :-