Hi, I'm Cathy, a Web Designer/Developer/WordPress Fanatic/Salesforce.com APEX Coder, etc. and I'm from the Philippines. Learn more about me...

Invoking Apex from a Custom Button using a Visualforce Page

Published by at 4:42 pm under Salesforce.com on Monday, February 22nd, 2010 at 4:42 pm

This post is about creating a custom button to be placed in a detail page using Visualforce page instead of an S-control (deprecated). I will be using Opportunity object for this example.

The Controller:

public class VFController
{
    private final ApexPages.StandardController theController;
    public List<Opportunity> listOpps = new List<Opportunity>();
 
    public VFController(ApexPages.StandardController stdController)
    {
          theController = stdController;
    }
    // Code we will invoke on page load.
    public PageReference autoRun()
    {
        for (Opportunity opp:[select id, name from Opportunity where id =:theController.getId()])
            {
	        opp.Name = opp.name + ' test';
                listOpps.add(opp);
	    }
		Database.update(listOpps);
 
	return theController.view().setRedirect(true);
    }
}

The Visualforce Page:

You don’t need to do anything special here. The most important part here is the parameter action = “{!autoRun}”.

<apex:page standardController="Opportunity"
extensions="VFController"
action="{!autoRun}"
>
<apex:sectionHeader title="Invoking Apex from a Button"/>
<apex:outputPanel>
You shoudn't see this page...
</apex:outputPanel>
</apex:page>

After that, go to Setup –> App Setup –> Customize –> Opportunities –> Buttons and Links. Add a new custom button with the following configuration.

This example simply appends “test” to the Opportunity name when you click on that custom button. This is only to show you that it works. Hope this helps. :)




One response so far

One Response to “Invoking Apex from a Custom Button using a Visualforce Page”

  1. Carmela Cuevason 06 Jan 2011 at 9:22 am

    Hi Cathy,

    I saw your profile on Odesk under Salesforce contractors. I am contacting you right now, since I have an ongoing Force.com development project that you might be interested in.

    Please contact me anytime, if you are interested. I also have a full-time job opportunity that you might want to discuss with me, too.

    Thank you! :-)

    Regards,

    Carmela

Trackback URI | Comments RSS

Leave a Reply