こんにちは、アンダーソンです。
今回は以前に書いた下記の記事の続きを書いていきたいと思います。
おさらい
VFで使えるコントローラの種類は4種類ありましたね。
- 標準コントローラ
- 標準リストコントローラ
- カスタムコントローラ
- 拡張コントローラ
今回は2番目の標準リストコントローラについて説明していきたいと思います。
標準リストコントローラ
標準リストコントローラを使用すると、レコードセットの表示や操作が行える Visualforce ページを作成できます。レコードセットを使用する既存の Salesforce ページの例として、リストページ、関連リスト、一括アクションページなどがあります。標準リストコントローラは、次のオブジェクトで使用できます。
標準リストコントローラ
標準コントローラとの一番の違いは複数のレコードが対象ということです。
前回作成した、コードに似た感じで下記のようなモノを作成してみました。
<apex:page standardController="Test1__c" recordSetVar="tests">
<apex:form >
<apex:pageBlock title="詳細画面">
<apex:pageBlockTable value="{!tests}" var="t">
<apex:column value="{!t.Text__c}"/>
<apex:column value="{!t.CheckBox__c}"/>
<apex:column value="{!t.Datetime__c}"/>
<apex:column value="{!t.PickList__c}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>
このようにすると下記のようなページが作成されます。

レコード3つしかないですが、、、きちんとリストが表示されていますね。
標準リストコントローラはリストビューであるということを抑えておきましょう。
ここで重要な宣言の仕方があるので抑えておきましょう。
<apex:page standardController="Test1__c" recordSetVar="tests">
recordSetVar=”tests”
ここに入るのが複数レコードが入ったリストだと考えていいと思います。
そして
<apex:pageBlockTable value="{!tests}" var="t">
ここではテーブルに対してリストでループさせています。
その際に使うリストが先ほどのrecordSetVarで宣言した変数です。
このようにすれば簡単にリストビューを作成することができます。
ページ送り機能を実装しよう
リストビューについている機能としてページ送り機能がありますが、
それも標準リストコントローラでは簡単に実装することができます。
<apex:pageBlockButtons>
<apex:commandButton action="{!previous}" value="前へ"/>
<apex:commandButton action="{!next}" value="次へ"/>
</apex:pageBlockButtons>
これを先ほどのコードに追加するだけで簡単にページ送りのボタンができます。

前へ、次へボタンが追加されてますね。
他にもはじめへのfirst、最後へのlastもあります。
リストを選択できるようにしよう
リストビュー画面では条件に応じたリストビューがあります。
オブジェクトを選択した時に左上に出てくる最近参照した〜とかのことです。

このリストビューにも全てIdがふられます。
このIdを指定してリストビュー画面に遷移させることもできます。
<apex:selectList value="{!filterid}" size="1">
<apex:selectOptions value="{!listviewoptions}"/>
</apex:selectList>
<apex:commandButton value="リストビューへ" action="{!list}"/>
記述は上記の形でOKです。
これでリストビューの選択オプションが表示され、選択してからボタンを押せばそのリストに飛べます。
さらにこれを組み合わせて先ほど実装したビュー画面を切り替えることもできます。
<apex:selectList value="{!filterid}" size="1">
<apex:actionSupport event="onchange" reRender="recordView"/>
<apex:selectOptions value="{!listviewoptions}"/>
</apex:selectList>
このようにして、テーブルをreRenderすれば選択したリストに切り替えることができます。
また、保存動作もありますので、複数のレコードを一気に編集するなんてこともできます。
<apex:column headerValue="チェックボックス">
<apex:inputField value="{!t.CheckBox__c}"/>
</apex:column>
<apex:commandButton action="{!save}" value="保存"/>
これでこのような画面になります。

まとめ
いかがでしたでしょうか。
Apexの知識がなくてもリストビューを作成することができますし、一括編集画面も作成することができます。
ぜひいろいろと試してみてください。
今回のコードもGitHubにあげておきますので、参考にしてみてください。
コメント