2012-01-19 27 views
7

tôi biết rằng đây là làm thế nào để tiết kiệm một kỷ lụcLàm thế nào để thực hiện "Hủy bỏ" chức năng trong một VisualForce Trang

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

Tôi muốn có một nút để KHÔNG lưu các bản ghi hiện tại (ví dụ. Hủy bỏ) và điều hướng đến danh sách các bản ghi đã lưu (ví dụ: danh sách các đối tượng cho kiểu đối tượng đó).

Something như thế này ...

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

Trả lời

9

độ xem danh sách cho một đối tượng là URL của bạn cơ sở/tiền tố 3 lá thư cho đối tượng của bạn/o, ví dụ:

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

Vì vậy, bạn chỉ có thể tạo phương thức hành động trả về một Pagereference với URL thích hợp và đặt để chuyển hướng (pr.setRedirect(true)).

Ngoài ra, bạn có thể sử dụng điều khiển của bạn như một phần mở rộng để một bộ điều khiển tiêu chuẩn, và chỉ 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"/> 

Lưu ý rằng điều này không nhất thiết phải đưa bạn đến xem danh sách, nó sẽ đưa bạn trở lại trang cuối cùng bạn đã xem trước khi đến trang VF.

+1

Tôi luôn cố gắng sử dụng các phương pháp điều khiển, vì lý do chúng được bảo vệ khỏi thay đổi định dạng URL. –

+0

Tất cả các ID đối tượng cho các bản ghi của đối tượng đó sẽ có cùng 3 chữ cái lúc bắt đầu, nhưng như Jeremy nói, tốt nhất là sử dụng các hành động chuẩn khi có thể. Bạn có thể thay đổi bộ điều khiển của bạn thành phần mở rộng chỉ bằng cách thêm một tham số điều khiển chuẩn vào hàm tạo và sửa đổi thẻ '' để nó có 'standardController =" MyObject__c "extensions =" ​​MyCustomController "' –

+0

Điều này không hoạt động khi hủy ajax bằng cách trả về null. Tôi lưu dữ liệu không hợp lệ vào trường và trường năm cung cấp cho tôi lỗi. khi hủy nó sẽ quay lại chế độ xem chỉ đọc nhưng dữ liệu đã được thay đổi thành dữ liệu không hợp lệ.Tuy nhiên, khi làm mới trang dữ liệu không hợp lệ không có ở đó và dữ liệu trước đó được hiển thị – powerfade917

1

Trong khi áp dụng hủy visualforce hoạt động bạn nên dừng lại dưới dạng validation.Use dưới bất kỳ một phương pháp để ngăn chặn các hình thức xác nhận dựa trên yêu cầu của bạn.

Phương pháp 1:

Sử dụng html-5 trong DOCTYPE trong visualforce trang có nghĩa là bạn nên sử dụng html-formnovalidateimmediate nút hủy. Ví dụ

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

Cách 2:

bạn nên sử dụng immediate từ khóa chỉ cần cho dừng hình thức xác nhận. Ví dụ:

<apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/> 
Các vấn đề liên quan