この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

リストコントローラーによるデータへのアクセス

式の構文によるレコードへのアクセス

ページをリストコントローラーに関連付けたら、式言語の構文を使用して一連のレコードに対応策を実行できます。たとえば、取引先のテーブルを作成するには、次のマークアップを使用します。
1<apex:page standardController="Account" recordSetVar="accounts" tabstyle="account" sidebar="false">
2  <apex:pageBlock>
3    <apex:pageBlockTable value="{!accounts}" var="acc">
4      <apex:column value="{!acc.name}"/>
5    </apex:pageBlockTable>
6  </apex:pageBlock>
7</apex:page>
この例では、コンポーネント <apex:pageBlockTable> を使用してデータのテーブルを生成します。value 属性は、標準リストコントローラーで読み込まれた変数 {!accounts} に設定されます。この変数はレコードのリストであり、<apex:pageBlockTable> によってループ処理されます。

<apex:pageBlockTable> はリストの各レコードを acc 変数に割り当てます。次に、<apex:pageBlockTable> は、<apex:column> コンポーネントで定義されている行を使用して、テーブルに新しい行を作成します。<apex:column> コンポーネントは、現在のレコードを表す acc 変数を使用して、そのレコードの項目値を取得します。

これによって作成されたページには、組織のすべての取引先名のリストが表示されます。結果例のページ。

標準リストコントローラーを使用する場合、返されるレコードは、現在のビューの定義に従って最初のデータ列を基準に自動的に並び替えられます。拡張またはカスタムリストコントローラーを使用する場合、並び替えメソッドを制御できます。

このページでは要求で検索条件が指定されないため、ページは最後に使用した検索条件で表示されます。リストコントローラーでの検索条件の使用方法については、「標準リストコントローラーによるリストビュー」を参照してください。

メモ

Lightning Platform API でのクエリと同様に、式言語の構文を使用して関連するレコードからデータを取得できます。標準コントローラーと同様に、子-親リレーションは最大 5 レベルまで、親-子リレーションは 1 レベルをトラバースできます。

ID によるレコードへのアクセス

一般的なページ操作では、ページに移動する前にユーザーがリストビューからレコードを選択し、それらのレコードが Visualforce によってコントローラーに送信されます。選択したレコードを直接コントローラーに設定することで、レコードを手動で指定することもできます。

標準リストコントローラーは、StandardSetController Apex クラスに基づいています。Apex コントローラーからレコードのリストを設定するには、メソッド ApexPages.StandardSetController.setSelected() を使用します。

次にいくつかコードを見てみましょう。この例では、前の例のマークアップを使用して取引先名をテーブルに表示します。次に、特定のレコードを表示するように要求するために、カスタム Apex コードを組み込みます。

1<apex:page standardController="Account" recordSetVar="accounts" extensions="MyControllerExtension">
2  <apex:pageBlock >
3    <apex:pageBlockTable value="{!accounts}" var="acc">
4      <apex:column value="{!acc.name}"/>
5    </apex:pageBlockTable>
6  </apex:pageBlock>
7</apex:page>
8
9public with sharing class MyControllerExtension {
10    private ApexPages.StandardSetController setController;
11
12    public MyControllerExtension(ApexPages.StandardSetController setController) {
13        this.setController = setController;
14        
15        Account [] records = [SELECT Id, Name FROM Account LIMIT 30];
16        setController.setSelected(records);
17    }
18}

標準リストコントローラーは、StandardSetController Apex クラスに基づいています。リストコントローラーに割り当てられているレコードのリストを取得するには、メソッド ApexPages.StandardSetController.setSelected() を使用します。

MyControllerExtension のコンストラクターで、ID と名前を Account オブジェクトから選択し、最初の 30 個の結果に制限する SOQL リクエストを実行します。次に setController.setSelected(records) を定義して、レコードがページ読み込み時に選択されるようにします。

標準リストコントローラーは最大 10,000 レコードを返すことができます。カスタムコントローラーは、より大きな結果セットに使用できます。「大量のデータセットを使用した作業」を参照してください。

メモ

レコード ID のリストを複数のクエリパラメーターとして URL に含めることで、URL に渡すこともできます。たとえば、3 つの取引先 ID を持つ URL は /apex/pageName?ids=001xx00account1&ids=001xx00account2&ids=001xx00account3 のようになります。

ブラウザーによっては、URL の長さに厳格な制限があります。URL の ID が多すぎると、長さの制限に達する可能性が高くなり、この場合ページが正しく動作しなくなります。URL 文字列に ID を手動で含める代わりに、選択したレコードをコントローラーに設定することをお勧めします。