以下の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クラス】
チェックを付けたレコードに対してプログラムを実行する。
プログラムの実行方法には以下の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のファンページ

