2012-01-19 1 views
4

Я знаю, что это, как сохранить записьКак реализовать «Сохранить & New» функциональность в Visualforce Page

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

Теперь я хочу кнопку, чтобы сохранить текущую запись и сбросить форму для ввода другого запись.

Что-то вроде этого ...

<apex:commandButton action="{!SaveAndNew}" value="Save & New"/> 

ответ

3

URL-адрес для новой звукозаписывающей странице с {орг URL}/{3 буквы объекта префикс}/е?».

You может определить ваш метод сохранения следующим образом, где m_sc является ссылка на standardController передается на ваш добавочный номер в это конструктор:

public Pagereference doSaveAndNew() 
    { 
    SObject so = m_sc.getRecord(); 
    upsert so; 

    string s = '/' + ('' + so.get('Id')).subString(0, 3) + '/e?'; 
    ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.Info, s)); 
    return new Pagereference(s); 
    } 

чтобы использовать контроллер в качестве расширения, изменить его конструктор взять ссылку StandardController в качестве аргумента:

public class TimeSheetExtension 
{ 
    ApexPages.standardController m_sc = null; 

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

    //etc. 

Затем просто измените <apex:page> тег на странице, чтобы ссылаться на него как расширение:

<apex:page standardController="Timesheet__c" extensions="TimeSheetExtension"> 
    <apex:form > 
    <apex:pageMessages /> 
    {!Timesheet__c.Name} 
    <apex:commandButton action="{!doCancel}" value="Cancel"/> 
    <apex:commandButton action="{!doSaveAndNew}" value="Save & New"/> 
    </apex:form> 
</apex:page> 

Обратите внимание, что вам не нужно расширение в имени класса , Я просто сделал это, чтобы быть разумным. Вам не нужно изменять что-либо еще на своей странице, чтобы использовать этот подход.

2

В идеале, вы можете использовать класс ApexPages.Action для этого. Но когда я пытался его использовать, это было слишком плохо. Это было какое-то время, поэтому вы можете играть с ним, используя действие {!URLFOR($Action.Account.New)}.

будет Работает просто с помощью PageReference, чтобы перенаправить пользователя на «новый» URL.

Например, если бы это было для счетов,

public PageReference SaveAndNew() { 
    // code to do saving goes here 

    PageReference pageRef = new PageReference('/001/e'); 
    return pageRef; 
} 
+0

В каком издании Salesforce вы работаете? –

+0

Если вы будете развертывать это из своей организации разработчика, любое решение с пользовательскими контроллерами потребует Enterprise Edition или больше. –

Смежные вопросы