You need to sign in to do that
Don't have an account?
AJAX help: selection of Picklist value not rendering the pageblock of related object
Hi,
I have two objects, Opportunity and Pricing_Support__c. Both are related via lookup.
I have created a visualforce page which will then render pageblocks based on the user selection.
when i select the stagename, i can render a pageblock which has a field of Pricing_Support__c object.
Now, when i select a value from the above rendered field, i am unable to render another pageblock dynamically. The one in Red color below.
Any pointers/idea/help on this is highly appreciated.
FYI, the visualforce page has a standardcontroller of opportunity and a controllerextension.
VF Page:
<apex:page standardController="Opportunity" extensions="pricingSupport" > <apex:form > <apex:pageBlock title="Enter Opportunity Information"> <apex:pageBlockButtons location="bottom"> <apex:commandButton value="Save" action="{!Save}"/> <apex:commandButton value="Cancel" action="{!Cancel}" immediate="true"/> </apex:pageBlockButtons> <apex:PageblockSection columns="1" > <apex:inputField value="{!Opportunity.Name}"/> <apex:PageBlockSectionItem > <apex:outputLabel value="Stage"/> <apex:actionRegion > <apex:inputField value="{!Opportunity.StageName}"> <apex:actionSupport event="onchange" reRender="ajaxrequest" status="RefreshStatus" /> </apex:inputField> </apex:actionRegion> </apex:PageBlockSectionItem> </apex:PageblockSection> <apex:outputPanel id="ajaxrequest"> <apex:pageBlockSection rendered="{!Opportunity.StageName=='Prospecting'|| Opportunity.StageName!=Null}" > <apex:PageBlockSectionItem > <apex:outputLabel value="Contract Scenario"/> <apex:actionRegion > <apex:inputField value="{!priceSupport.Contract_Scenario__c}"> <apex:actionSupport event="onchange" reRender="ajaxrequest2" status="RefreshStatus"/> </apex:inputField> </apex:actionRegion> </apex:PageBlockSectionItem> </apex:pageBlockSection> </apex:outputPanel> <apex:outputPanel id="ajaxrequest2"> <apex:pageBlockSection title="Rendered" rendered="{!priceSupport.Contract_Scenario__c=='1.Existing Contract / Contract Expansion'}" > <apex:inputField value="{!Opportunity.CloseDate}"/> </apex:pageBlockSection> </apex:outputPanel> </apex:pageBlock> </apex:form> </apex:page>
Apex class(controller extension):
public class pricingSupport {
Public Pricing_Support__c priceSupport {get;set;}
public pricingSupport(ApexPages.StandardController controller) {
}
Public pageReference saveAction(){
return Null;
}
Public pageReference cancelAction(){
return Null;
}
}
Thanks,
Sales4ce
I have two guesses where it might be going wrong:
1. The condiction that you are giving the rendered attribute, could you please check it once again in the sense that value "1.Existing Contract / Contract Expansion". If Contract_Scenario__c is a picklist filed then try to copy paste that value in your code as sometimes even the spaces count.
2.
In your extension instead of
public Pricing_Support__c priceSupport {get;set;}
use
Pricing_Support__c priceSupport;
public Pricing_Support__c getpriceSupport(){
if(priceSupport==null)
priceSupport = new Pricing_Support__c();
return priceSupport;
}
try both and see if any one of them works. Most probably the first one could be the one causing the problem.
All Answers
I have two guesses where it might be going wrong:
1. The condiction that you are giving the rendered attribute, could you please check it once again in the sense that value "1.Existing Contract / Contract Expansion". If Contract_Scenario__c is a picklist filed then try to copy paste that value in your code as sometimes even the spaces count.
2.
In your extension instead of
public Pricing_Support__c priceSupport {get;set;}
use
Pricing_Support__c priceSupport;
public Pricing_Support__c getpriceSupport(){
if(priceSupport==null)
priceSupport = new Pricing_Support__c();
return priceSupport;
}
try both and see if any one of them works. Most probably the first one could be the one causing the problem.
Thanks Sravu. It was the second option that i missed and it worked like charm.
Sales4ce