StandardSetController クラス
StandardSetController オブジェクトを使用すると、Salesforce が提供する、プリビルドされた Visualforce リストコントローラと同様のリストコントローラ、またはその拡張としてリストコントローラを作成できます。
名前空間
ApexPages
使用方法
StandardSetController クラスには、プロトタイプオブジェクトも含まれます。これは、Visualforce の StandardSetController クラスに含まれる単一の sObject です。プロトタイプオブジェクトの項目が設定されている場合、それらの値は、保存操作中に使用されます。つまり、値は設定されたコントローラコレクションのすべてのレコードに適用されます。これは、一括更新 (オブジェクトのコレクション内の項目に同一の変更を適用) を実行するページを記述するときに役立ちます。
インスタンス化
次のいずれかの方法で、StandardSetController をインスタンス化することができます。
- sObjects のリストを使用する場合:
1List<account> accountList = [SELECT Name FROM Account LIMIT 20]; 2ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(accountList); - クエリロケータを使用する場合:
1ApexPages.StandardSetController ssc = 2new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name,CloseDate FROM Opportunity]));
例
次の例では、StandardSetController オブジェクトのカスタムリストコントローラのコンストラクタでの使用方法を示します。
1swfobject.registerObject("clippy.codeblock-2", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class opportunityList2Con {
18 // ApexPages.StandardSetController must be instantiated
19 // for standard list controllers
20 public ApexPages.StandardSetController setCon {
21 get {
22 if(setCon == null) {
23 setCon = new ApexPages.StandardSetController(Database.getQueryLocator(
24 [SELECT Name, CloseDate FROM Opportunity]));
25 }
26 return setCon;
27 }
28 set;
29 }
30
31 // Initialize setCon and return a list of records
32 public List<Opportunity> getOpportunities() {
33 return (List<Opportunity>) setCon.getRecords();
34 }
35}次の Visualforce マークアップは、上記のコントローラをページ内で使用する方法を示します。
1swfobject.registerObject("clippy.codeblock-3", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page controller="opportunityList2Con">
18 <apex:pageBlock>
19 <apex:pageBlockTable value="{!opportunities}" var="o">
20 <apex:column value="{!o.Name}"/>
21 <apex:column value="{!o.CloseDate}"/>
22 </apex:pageBlockTable>
23 </apex:pageBlock>
24</apex:page>