如何在VisualForce页面中实现"取消"功能

Sam*_*Sam 7 salesforce force.com visualforce apex-code

我知道这是如何保存记录的

<apex:commandButton action="{!save}" value="Save"/>
Run Code Online (Sandbox Code Playgroud)

我想要一个按钮不保存当前记录(即取消)并导航到保存记录列表(即该对象类型的对象列表).

像这样......

<apex:commandButton action="{!cancel}" value="Cancel"/>
Run Code Online (Sandbox Code Playgroud)

Mat*_*cey 9

对象的列表视图是您的基本URL /对象/ o的3个字母前缀,例如:

https://na1.salesforce.com/a0C/o
Run Code Online (Sandbox Code Playgroud)

因此,您可以创建一个操作方法,该方法返回Pagereference带有相应URL的a并设置为redirect(pr.setRedirect(true)).

或者,您可以将控制器用作标准控制器的扩展,并在标准控制器上调用cancel:

// 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"/>
Run Code Online (Sandbox Code Playgroud)

请注意,这不一定会将您带到列表视图,它会返回到您在访问VF页面之前查看的最后一页.


Pir*_*ran 7

您还应该将"即时"标记添加到"取消"按钮,以便在执行"取消"操作之前表单不会运行任何验证.

<apex:commandButton action="{!cancel}" immediate="true" value="Cancel"/>
Run Code Online (Sandbox Code Playgroud)

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