セールスフォースお助け隊ブログ | Salesforce
セールスフォース開発者のブログRSS
ビュー画面でリストアップされたレコードにチェックを付け、データを一括削除するボタンを作成する方法

ビュー画面でリストアップされたレコードにチェックを付け、データを一括削除するボタンを作成する方法

2010年10月31日 21:17
以下の2つの方法がある。ボタン表示の種類をリストボタンとして、
チェックを付けたレコードに対してプログラムを実行する。
プログラムの実行方法には以下の2種類がある。
削除だけが目的なら、(1)が簡単に実装できる。
ただし、(1)の方法ではApexクラスの呼び出しが出来ない。
削除処理と連動して、別処理(Apexクラスを呼び出しメール送信するなど)を
実行したい場合は、(2)の方法を使う。

(1)JavaScriptで実行。
例)
{!REQUIRESCRIPT("/soap/ajax/11.1/connection.js")}
var records = {!GETRECORDIDS( Lead.Id )}; // ←チェックしたレコードを配列に格納
sforce.connection.deleteIds(records);


(2)ボタンを押すと、Visualforceページに遷移してApexクラスでチェックしたレコードを削除。
削除後、もとのページにリダイレクト。

例)
【Visualforceページ】
<apex:page standardController="Lead" recordSetVar="leads" extensions="listButtonTest" action="{!massDelete}">
</apex:page>

【APEXクラス】
public class listButtonTest {
    List<Lead> selectedLeads { get; set; }
    ApexPages.StandardSetController myController { get; set; }
    String returnURL;
    
    public listButtonTest(ApexPages.StandardSetController controller) {
        controller.setPageSize(10);
        myController = controller;
    }

    public PageReference massDelete() {
        // レコードの削除を実行
        Database.Delete(myController.getSelected());

        // 削除したことを知らせるメッセージをセット
        ApexPages.addMessage(
                             new ApexPages.Message(
                                 ApexPages.Severity.ERROR
                               , '選択されたレコードを削除しました')
                             );
        
        // 削除が済んだら、レコード一覧のページへ戻る
        String prevURL = System.currentPageReference().getParameters().get('retURL');
        PageReference prevPage = new PageReference(prevURL); 

        return prevPage;

    }
}

「セールスフォースお助け隊ブログ」へのコメントやご意見等ありましたら
ファンページまでお願いします。  Facebookのファンページ

Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ

← 前のエントリー     次のエントリー →

顧客管理システム Salesforce CRM