今回は Salesforce オブジェクトのリストビューで複数選択したレコードに対して、 Visualforce ページを呼び出し Apex で処理する方法をご紹介します。
##動作イメージ
- 商談のリストビューで、レコードを複数選択
- リストボタンで VF ページを開き、選択されている商談レコードを確認
- 選択された商談レコードに対して Apex 処理を実行し、前の画面に戻る
##設定方法
1. Visualforce ページと Apex を作成
CustomOpportunitySetController.apxc
public with sharing class CustomOpportunitySetController {
public List<Opportunity> selectedOpportunities {get;set;}
// コンストラクター
public CustomOpportunitySetController(ApexPages.StandardSetController controller) {
List<Opportunity> opportunities = controller.getSelected();
this.selectedOpportunities = [SELECT Id, Name FROM Opportunity WHERE Id IN :(new Map<Id, Opportunity>(opportunities)).keySet()];
}
public void execute() {
// this.selectedOpportunities に対し必要なの処理をする
}
}
VisualforcePageForOpportunityListButton.vfp
<apex:page standardController="Opportunity" recordSetvar="opportunities" extensions="CustomOpportunitySetController">
<apex:form>
<apex:pageBlock title="現在選択されている商談" >
<apex:pageBlockButtons location="bottom">
<apex:commandButton action="{!execute}" value="処理を実行" oncomplete="history.back();" />
</apex:pageBlockButtons>
<apex:pageBlockTable value="{!selectedOpportunities}" var="opportunity">
<apex:column value="{!opportunity.Name}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>
2. リストボタンの作成と表示
設定 > オブジェクトマネージャー > 商談 > ボタン、リンク、およびアクション > 新規ボタンまたはリンク
から、以下の要領で作成
設定 > オブジェクトマネージャー > 商談 > Salesforce Classic の検索レイアウト > リストビューのドロップダウンメニューから編集
から、以下の要領で作成