2012-01-19 12 views
7

So che questo è il modo di salvare un recordCome implementare "Cancel" funzionalità in un Visualforce pagina

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

voglio un tasto per non salvare il record corrente (es. Annulla) e passare alla lista dei record salvati (cioè lista di oggetti per quel tipo di oggetto).

qualcosa di simile ...

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

risposta

9

La vista lista per un oggetto è il vostro URL di base/il prefisso 3 lettera per l'oggetto/o, ad esempio:

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

Così si potrebbe semplicemente creare un metodo di azione che restituisca un Pagereference con l'URL appropriato e impostato su reindirizzamento (pr.setRedirect(true)).

In alternativa, è possibile utilizzare il controller come un interno a un controller standard, e solo 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"/> 

Si noti che questo non significa necessariamente ti fa visualizzazione elenco, che sarà si ritorna l'ultima pagina che stavi visualizzando prima di andare alla pagina VF.

+1

Cerco sempre di utilizzare i metodi del controller, poiché in teoria sono protetti dal formato di URL. –

+0

Tutti gli ID oggetto per i record di quell'oggetto avranno le stesse 3 lettere all'inizio, ma come dice Jeremy, è meglio usare le azioni standard laddove possibile. Dovresti essere in grado di cambiare il controller in un'estensione semplicemente aggiungendo un parametro controller standard al costruttore e modificando il tag ' in modo che abbia' standardController = "MyObject__c" extensions = "MyCustomController" ' –

+0

Questo non funziona quando annulla il modo ajax restituendo null. Ho salvato i dati non validi in campo e campo anno mi danno errore. quando si cancella torna alla visualizzazione di sola lettura ma i dati sono stati modificati in dati non validi.Tuttavia, quando si aggiorna la pagina, i dati non validi non sono lì e vengono visualizzati i dati precedenti – powerfade917

1

Durante l'applicazione annullare un'operazione Visualforce è necessario arrestare il modulo qui sotto validation.Use uso di uno metodi per fermare la validazione dei form in base alle vostre esigenze.

Metodo 1:

Utilizzando HTML-5 in doctype in Visualforce pagina significa che si dovrebbe usare html-formnovalidate e immediate nel pulsante di annullamento. Per esempio

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

Metodo 2:

si dovrebbe usare immediate parola chiave solo bisogno per fermare la validazione dei form. Per esempio

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