function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Rolando EstevesRolando Esteves 

Refresh master page from VF page in new section area

Is it possible to refresh master page from a visual force page that is embeded on the opportunity layout ??

 

Thanks for all the help.

 

I already tried calling JS functions like window. and doing the following in the controller:

 

 PageReference curPage = new ApexPages.StandardController(opp).view();
       curPage.setRedirect(true);
       return curPage ;

 

Best Answer chosen by Admin (Salesforce Developers) 
JHayes SDJHayes SD

Hi Rolando,

 

I took this solution from this post:  http://forums.sforce.com/t5/Visualforce-Development/Embedding-Visual-FOrce-page-in-standard-layout-access-to-std/td-p/116543

 

Basically what you want to do is create a Boolean variable in your controller extension class that indicates whether the master page needs to be reloaded.  An <apex:outputPanel> element can then be used in your inline VF page to refresh the master.  

 

Controller extension:

 

public class TestOpportunityControllerExt {
	
	private ApexPages.StandardController controller {get; set;}
	private Opportunity o;
	
	public String pageUrl {set;}
	public Boolean reloadNeeded {get; set;}
	
	public string searchText {
    	get {
    		if (searchText == null) searchText = 'Default Search Text';
    		return searchText;
    	}
    	set;
	}
	
	public TestOpportunityControllerExt(ApexPages.StandardController controller) {
		this.controller = controller;
		this.o = (Opportunity) controller.getRecord();
	}
	
	public PageReference search() {
		reloadNeeded = true;
		return null;
	}
	
	public String getPageUrl() {
		PageReference pr = new ApexPages.StandardController(o).view();
		return pr.getUrl();
	}
	
}

 

VF page:

 

<apex:page standardController="Opportunity" extensions="TestOpportunityControllerExt" >
	<apex:form >
		<!--  Do we need to reload the page? -->
		<apex:outputPanel id="reloadPanel" rendered="{!reloadNeeded}" >
		   	<script type="text/javascript">
				// redirect the top level window
				window.top.location.href = '{!pageURL}';
			</script>	
		</apex:outputPanel>
		<apex:pageBlock title="Test Opportunity Inline VF Page">		
			<apex:pageBlockSection >
				<apex:pageBlockSectionItem >

					<apex:outputLabel for="searchText">Keyword</apex:outputLabel>
					<apex:panelGroup >
						<apex:inputText id="searchText" value="{!searchText}"/>
						<apex:commandButton value="Submit" action="{!search}" />
					</apex:panelGroup>
				</apex:pageBlockSectionItem>
			</apex:pageBlockSection>
		</apex:pageBlock>
	</apex:form>
</apex:page>

 Let me know how this works for you as it worked just fine for me in my test.

 

Regards, Jeremy

All Answers

JHayes SDJHayes SD

Hi Rolando,

 

I took this solution from this post:  http://forums.sforce.com/t5/Visualforce-Development/Embedding-Visual-FOrce-page-in-standard-layout-access-to-std/td-p/116543

 

Basically what you want to do is create a Boolean variable in your controller extension class that indicates whether the master page needs to be reloaded.  An <apex:outputPanel> element can then be used in your inline VF page to refresh the master.  

 

Controller extension:

 

public class TestOpportunityControllerExt {
	
	private ApexPages.StandardController controller {get; set;}
	private Opportunity o;
	
	public String pageUrl {set;}
	public Boolean reloadNeeded {get; set;}
	
	public string searchText {
    	get {
    		if (searchText == null) searchText = 'Default Search Text';
    		return searchText;
    	}
    	set;
	}
	
	public TestOpportunityControllerExt(ApexPages.StandardController controller) {
		this.controller = controller;
		this.o = (Opportunity) controller.getRecord();
	}
	
	public PageReference search() {
		reloadNeeded = true;
		return null;
	}
	
	public String getPageUrl() {
		PageReference pr = new ApexPages.StandardController(o).view();
		return pr.getUrl();
	}
	
}

 

VF page:

 

<apex:page standardController="Opportunity" extensions="TestOpportunityControllerExt" >
	<apex:form >
		<!--  Do we need to reload the page? -->
		<apex:outputPanel id="reloadPanel" rendered="{!reloadNeeded}" >
		   	<script type="text/javascript">
				// redirect the top level window
				window.top.location.href = '{!pageURL}';
			</script>	
		</apex:outputPanel>
		<apex:pageBlock title="Test Opportunity Inline VF Page">		
			<apex:pageBlockSection >
				<apex:pageBlockSectionItem >

					<apex:outputLabel for="searchText">Keyword</apex:outputLabel>
					<apex:panelGroup >
						<apex:inputText id="searchText" value="{!searchText}"/>
						<apex:commandButton value="Submit" action="{!search}" />
					</apex:panelGroup>
				</apex:pageBlockSectionItem>
			</apex:pageBlockSection>
		</apex:pageBlock>
	</apex:form>
</apex:page>

 Let me know how this works for you as it worked just fine for me in my test.

 

Regards, Jeremy

This was selected as the best answer
Rolando EstevesRolando Esteves

Thanks !