🐴
Apex,Visualforce:複数の子レコードを呼び出し、入力して保存する
概要
Visualforceで親×子(複数)のページを作成し、変更内容を反映するためのサンプルコード
画面イメージ
ソースコード:Apexクラス
public class CustomControllerTest {
public Id accountId; //親取引先のID
public List<Contact> con {get;set;} //対象の取引先責任者リスト
public Account account {get;set;}
//コンストラクタ
public CustomControllerTest(ApexPages.StandardSetController controller) {
accountId = ApexPages.currentPage().getParameters().get('id');
con = [Select id, Name,firstName,LastName from Contact where accountId = :accountId ];
account = [Select id , Name from Account where id = :accountId Limit 1];
}
//保存処理
public PageReference save() {
upsert account;
upsert con;
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return null;
}
public PageReference fullsave() {
String parameter = System.currentPageReference().getParameters().get('parameter');
upsert account;
upsert con;
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return null;
}
}
ソースコード:Visualforceページ
<apex:page standardController="Account" recordSetVar="Lists" extensions="CustomControllerTest">
<apex:form>
<apex:pageBlock title="取引先編集画面">
<table>
<thead>
<th>id</th>
<th>Name</th>
</thead>
<apex:repeat value="{!account}" var="hoge">
<tr>
<td>
<apex:inputField value="{!hoge.Id}" /> </td>
<td>
<apex:inputField value="{!hoge.Name}" /> </td>
</tr>
</apex:repeat>
</table>
<apex:commandButton action="{!save}" Value="保存" />
<apex:commandButton action="{!cancel}" Value="キャンセル" /> </apex:pageBlock>
<apex:pageBlock title="取引先責任者編集画面">
<table>
<thead>
<th>id</th>
<th>FirstName</th>
<th>LastName</th>
</thead>
<apex:repeat value="{!con}" var="fuga">
<tr>
<td>
<apex:inputField value="{!fuga.Id}" /> </td>
<td>
<apex:inputField value="{!fuga.FirstName}" /> </td>
<td>
<apex:inputField value="{!fuga.LastName}" /> </td>
</tr>
</apex:repeat>
</table>
<apex:commandButton action="{!save}" Value="保存" />
<apex:commandButton action="{!cancel}" Value="キャンセル" /> </apex:pageBlock>
</apex:form>
</apex:page>
memo
apex:pageBlockTableにネストしてapex:repeatを使う方法がわからんかったので普通にHTMLタグでテーブルを作った。
やり方がわかったらそのうちまた別の記事にする予定。
Discussion