リストコントローラーによるデータへのアクセス
式の構文によるレコードへのアクセス
<apex:pageBlockTable> はリストの各レコードを acc 変数に割り当てます。次に、<apex:pageBlockTable> は、<apex:column> コンポーネントで定義されている行を使用して、テーブルに新しい行を作成します。<apex:column> コンポーネントは、現在のレコードを表す acc 変数を使用して、そのレコードの項目値を取得します。
これによって作成されたページには、組織のすべての取引先名のリストが表示されます。
標準リストコントローラーを使用する場合、返されるレコードは、現在のビューの定義に従って最初のデータ列を基準に自動的に並び替えられます。拡張またはカスタムリストコントローラーを使用する場合、並び替えメソッドを制御できます。
Lightning Platform API でのクエリと同様に、式言語の構文を使用して関連するレコードからデータを取得できます。標準コントローラーと同様に、子-親リレーションは最大 5 レベルまで、親-子リレーションは 1 レベルをトラバースできます。
ID によるレコードへのアクセス
一般的なページ操作では、ページに移動する前にユーザーがリストビューからレコードを選択し、それらのレコードが Visualforce によってコントローラーに送信されます。選択したレコードを直接コントローラーに設定することで、レコードを手動で指定することもできます。
標準リストコントローラーは、StandardSetController Apex クラスに基づいています。Apex コントローラーからレコードのリストを設定するには、メソッド ApexPages.StandardSetController.setSelected() を使用します。
次にいくつかコードを見てみましょう。この例では、前の例のマークアップを使用して取引先名を��ーブルに表示します。次に、特定のレコードを表示するように要求するために、カスタム Apex コードを組み込みます。
標準リストコントローラーは、StandardSetController Apex クラスに基づいています。リストコントローラーに割り当てられているレコードのリストを取得するには、メソッド ApexPages.StandardSetController.setSelected() を使用します。
MyControllerExtension のコンストラクターで、ID と名前を Account オブジェクトから選択し、最初の 30 個の結果に制限する SOQL リクエストを実行します。次に setController.setSelected(records) を定義して、レコードがページ読み込み時に選択されるようにします。
レコード ID のリストを複数のクエリパラメーターとして URL に含めることで、URL に渡すこともできます。たとえば、3 つの取引先 ID を持つ URL は /apex/pageName?ids=001xx00account1&ids=001xx00account2&ids=001xx00account3 のようになります。
ブラウザーによっては、URL の長さに厳格な制限があります。URL の ID が多すぎると、長さの制限に達する可能性が高くなり、この場合ページが正しく動作しなくなります。URL 文字列に ID を手動で含める代わりに、選択したレコードをコントローラーに設定することをお勧めします。