標準リストコントローラによるリストビューの使用
多くの Salesforce ページに含まれるリストビューを使用して、ページに表示されるレコードを絞り込むことができます。たとえば、商談ホームページでは、リストビュードロップダウンから [私の商談] を選択して、自分が所有する商談のみのリストを表示できます。リストコントローラに関連付けられたページでは、リストビューを使用することもできます。
たとえば、リストビューを使用して取引先の単純なリストを作成するには、次のマークアップを使用してページを作成します。
1<apex:page standardController="Account" recordSetvar="accounts">
2 <apex:pageBlock title="Viewing Accounts">
3 <apex:form id="theForm">
4 <apex:panelGrid columns="2">
5 <apex:outputLabel value="View:"/>
6 <apex:selectList value="{!filterId}" size="1">
7 <apex:actionSupport event="onchange" rerender="list"/>
8 <apex:selectOptions value="{!listviewoptions}"/>
9 </apex:selectList>
10 </apex:panelGrid>
11 <apex:pageBlockSection >
12 <apex:dataList var="a" value="{!accounts}" id="list">
13 {!a.name}
14 </apex:dataList>
15 </apex:pageBlockSection>
16 </apex:form>
17 </apex:pageBlock>
18</apex:page>そのページを開くと、次のように表示されます。![[ビュー] ドロップダウンリストが含まれ、[すべての取引先] オプションがオンになっている [取引先の参照] ページ](https://developer.salesforce.com/docs/resources/img/ja-jp/234.0?doc_id=images%2Fcustom_sosc_viewlist.jpg&folder=pages)
このページは、標準取引先コントローラに関連付けられており、<apex:selectlist> コンポーネントは、{!listviewoptions} によって入力されます。{!listviewoptions} を評価することにより、ユーザが表示できるリストビューが得られます。ユーザがドロップダウンリストから値を選択すると、その値はコントローラの filterId プロパティにバインドされます。filterId が変更されると、ページで使用できるレコードが変更されるため、<apex:datalist> が更新されると、その値を使用して、ページで使用できるレコードのリストが更新されます。
次のように編集ページでビューリストを使用することもできます。
1<apex:page standardController="Opportunity" recordSetVar="opportunities"
2 tabStyle="Opportunity"
3 sidebar="false">
4 <apex:form>
5 <apex:pageBlock>
6 <apex:pageMessages/>
7 <apex:pageBlock>
8 <apex:panelGrid columns="2">
9 <apex:outputLabel value="View:"/>
10 <apex:selectList value="{!filterId}" size="1">
11 <apex:actionSupport event="onchange" rerender="opp_table"/>
12 <apex:selectOptions value="{!listviewoptions}"/>
13 </apex:selectList>
14 </apex:panelGrid>
15 </apex:pageBlock>
16
17 <apex:pageBlockButtons>
18 <apex:commandButton value="Save" action="{!save}"/>
19 </apex:pageBlockButtons>
20 <apex:pageBlockTable value="{!opportunities}" var="opp" id="opp_table">
21 <apex:column value="{!opp.name}"/>
22 <apex:column headerValue="Stage">
23 <apex:inputField value="{!opp.stageName}"/>
24 </apex:column>
25 <apex:column headerValue="Close Date">
26 <apex:inputField value="{!opp.closeDate}"/>
27 </apex:column>
28 </apex:pageBlockTable>
29 </apex:pageBlock>
30 </apex:form>
31</apex:page>