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

时间:2012-01-19 05:25:12

标签: salesforce apex-code visualforce force.com

我知道这是如何保存记录

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

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

像这样......

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

4 个答案:

答案 0 :(得分:9)

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

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

因此,您可以创建一个操作方法,该方法返回带有相应网址的Pagereference并设置为重定向(pr.setRedirect(true))。

或者,您可以将控制器用作标准控制器的扩展,只需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"/>

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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:1)

在应用取消操作visualforce时,您应该停止表单验证。使用下面任何一种方法根据您的要求停止表单验证。

方法1:

使用   html-5 in docforce in visualforce page  意味着你应该在取消按钮中使用 html-formnovalidate immediate。例如

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

方法2:

您应该使用immediate关键字才需要停止表单验证。例如

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

答案 3 :(得分:0)

其他答案之一建议调用标准控制器的取消操作,因此我想对此进行扩展,因为它引导我朝着解决类似问题的方向前进。

如果您想在不刷新整个页面的情况下取消作为ajax请求的编辑,请将该操作声明为void并且不返回页面引用,但仍会在标准控件上调用“取消”操作。确保命令按钮指定了 rerender 属性。

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

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

  public void doCancel()
  {
    m_sc.cancel();
  }
}

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