🐴
Apex:カスタムコントローラを使ってVisualforceページでレコードを複数表示する
概要
デバッグ目的で最小構成のコントローラ+VFページを作成した。
やることが特に明確でないならスタンダードコントローラの利用を推奨します。
使うリソース
- Apex:開発
- Visualoforceページ:開発
- 取引先オブジェクト
ソースコード:Apex
public class ContactsListWithController {
private String sortOrder = 'Name';
public List<Account> getContacts() {
List<Account> results = Database.query(
'SELECT Id, Name ' +
'FROM Account ' +
'ORDER BY ' + sortOrder + ' ASC ' +
'LIMIT 10'
);
return results;
}
}
ちょろっと解説
private String sortOrder = 'Name';
テキスト型で変数宣言しつつ値を代入
public List<Account> getContacts() {
メソッドを宣言
List<Account> results = Database.query(
'SELECT Id, Name ' +
'FROM Account ' +
'ORDER BY ' + sortOrder + ' ASC ' +
'LIMIT 10'
);
SOQL文を作成
return results;
SOQL結果を返す
ソースコード:Visualforceページ
<apex:page controller="ContactsListWithController">
<apex:form>
<ul>
<apex:repeat value="{!Contacts}" var="precord">
<li>
<apex:inputField value="{!precord.Name}"/>:<apex:outputText value="{!precord.Name}"/>
</li>
</apex:repeat>
</ul>
</apex:form>
</apex:page>
ちょろっと解説
<apex:page controller="ContactsListWithController">
Apexで作成したコントローラを指定
<apex:form>/[なにか]/</apex:form>
[なにか]のとこにapex:inputfieldタグを入れると入力ができるようになる
<apex:repeat value="{!Contacts}" var="precord">
Apexコントローラ:ContactsListWithControllerからContacts
の値を取得しにいく。
戻り値はgetContactsが返すList型。中にはSOQLで取得したオブジェクトのレコードリストが入る。
※ここがよくわかってないんだけど、なぜgetContacts
ではなくてContacts
なのだろう…🤔
var="precord"
はfor文とかで言うとこのiみたいな用途の変数の理解。
<apex:inputField value="{!precord.Name}"
apex:repeatで受け取ったList型データからオブジェクトの項目を取得して入力フォームを表示する。
まとめ
Apex全然わからん。
Discussion