🐴
Apex,Visualforce:親と子のレコードをそれぞれ取得して編集し、保存したい
概要
タイトル通り。
親のレコードを開きつつ、子のレコードも一緒に更新したいときに役立つ。
こんな画面を出す
ソースコード:Apex
public class CustomControllerTest {
public Id accountId; //取引先のID
public Account acc {get;set;}
public Contact con {get;set;}
//コンストラクタ
public CustomControllerTest() {
accountId = ApexPages.currentPage().getParameters().get('id');
acc = [Select id, Name from Account where Id = :accountId];
con = [Select id, Name from Contact where accountId = :accountId];
}
//キャンセル処理
public PageReference cancel() {
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
//保存処理
public PageReference save() {
upsert acc;
upsert con;
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
}
ソースコード:Visualforce
<apex:page standardController="Account" extensions="CustomControllerTest">
<apex:form >
<apex:pageBlock title="取引先編集画面">
<apex:pageBlockTable title="account" value="{!account}" var="a" >
<apex:column headerValue="Id" >
<apex:inputField value="{!a.Id}"/>
</apex:column>
<apex:column headerValue="Name" >
<apex:inputField value="{!a.Name}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
<apex:pageBlock title="取引先責任者編集画面">
<apex:pageBlockTable title="con" value="{!con}" var="con" >
<apex:column headerValue="Id" >
<apex:inputField value="{!con.Id}"/>
</apex:column>
<apex:column headerValue="firstName" >
<apex:inputField value="{!con.firstName}"/>
</apex:column>
<apex:column headerValue="LastName" >
<apex:inputField value="{!con.LastName}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
<apex:commandButton action="{!save}" Value="保存"/>
<apex:commandButton action="{!cancel}" Value="キャンセル"/>
</apex:form>
</apex:page>
memo
親:子で1:Nとなる場合はまた別途。
Discussion