以下の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のファンページ