-->

How to implement “Cancel” functionality in a Visua

2020-07-10 02:57发布

问题:

I know that this is how to save a record

<apex:commandButton action="{!save}" value="Save"/>

I want a button to NOT save the current record (ie. Cancel) and navigate to the list of saved record (ie. list of objects for that object type).

Something like this...

<apex:commandButton action="{!cancel}" value="Cancel"/>

回答1:

The list view for an object is your base URL / the 3 letter prefix for your object / o, for example:

https://na1.salesforce.com/a0C/o

So you could just create an action method that returns a Pagereference with the appropriate URL and set to redirect (pr.setRedirect(true)).

Alternatively, you could use your controller as an extension to a standard controller, and just call cancel on the standard controller:

// controller extension
public class TimeSheetExtension
{
  ApexPages.standardController m_sc = null;

  public TimeSheetExtension(ApexPages.standardController sc)
  {
    m_sc = sc;
  }

  public PageReference doCancel()
  {
    return m_sc.cancel();
  }
}

// page
<apex:commandButton action="{!doCancel}" value="Cancel"/>

Note that this doesn't necessarily take you to the list view, it'll return you to the last page you were viewing before going to the VF page.



回答2:

You should also add the immediate tag to your Cancel button, so that the form doesn't run any validation before performing the Cancel operation.

<apex:commandButton action="{!cancel}" immediate="true" value="Cancel"/>

See http://blogs.developerforce.com/developer-relations/2008/12/using-the-immediate-attribute-on-commandlinks-and-commandbuttons.html



回答3:

While applying cancel operation visualforce you should stop the form validation.Use below any one methods to stop the form validation based on your requirements.

Method 1:

Using html-5 in doctype in visualforce page means you should use html-formnovalidate and immediate in cancel button. For example

<apex:commandButton action="{!cancel}" value="Cancel" immediate="true" 
                    html-formnovalidate="formnovalidate" />

Method 2:

you should use immediate key word only need for stopping form validation. For Example

 <apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/>