You need to sign in to do that
Don't have an account?
Kenichi Matsuda
Visualforceで複数オブジェクトの項目を編集したい
Visualforceページでのご相談です。
表示したい項目が商談と取引先にオブジェクトに跨っているので、このようなvisualforceページを作りました。
商談レコードのカスタムボタンで以下のVisualforceを指定し、内容の更新をしたいと思っています。
ボタン自体は商談のカスタムボタンなのですが、②の様に取引先の情報を更新したいのですが保存をしても
取引先の項目が保存した内容に反映されません。
①は保存できているのですが...オブジェクトを跨いでいるのでNGなのでしょうか?
それとも他に何か方法があるでしょうか?
<apex:page standardController="Opportunity" sidebar="false" showHeader="false" docType="html-5.0">
<apex:form >
<apex:pageBlock>
<apex:pageBlockButtons >
<apex:commandButton value=" 保存 " onclick="saveInfo();refresh();" reRender="form"/>
<apex:actionFunction name="saveInfo" action="{!save}" rerender="out" status="myStatus"/>
</apex:pageBlockButtons>
<apex:pageBlockSection>
<apex:outputField value="{!Opportunity.Name}"/>
<apex:inputField value="{!Opportunity.Type}"/> ・・・①
<apex:outputField value="{!Opportunity.Account.Name}"/>
<apex:inputField value="{!Opportunity.Account.state__c}"/> ・・・②
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
表示したい項目が商談と取引先にオブジェクトに跨っているので、このようなvisualforceページを作りました。
商談レコードのカスタムボタンで以下のVisualforceを指定し、内容の更新をしたいと思っています。
ボタン自体は商談のカスタムボタンなのですが、②の様に取引先の情報を更新したいのですが保存をしても
取引先の項目が保存した内容に反映されません。
①は保存できているのですが...オブジェクトを跨いでいるのでNGなのでしょうか?
それとも他に何か方法があるでしょうか?
<apex:page standardController="Opportunity" sidebar="false" showHeader="false" docType="html-5.0">
<apex:form >
<apex:pageBlock>
<apex:pageBlockButtons >
<apex:commandButton value=" 保存 " onclick="saveInfo();refresh();" reRender="form"/>
<apex:actionFunction name="saveInfo" action="{!save}" rerender="out" status="myStatus"/>
</apex:pageBlockButtons>
<apex:pageBlockSection>
<apex:outputField value="{!Opportunity.Name}"/>
<apex:inputField value="{!Opportunity.Type}"/> ・・・①
<apex:outputField value="{!Opportunity.Account.Name}"/>
<apex:inputField value="{!Opportunity.Account.state__c}"/> ・・・②
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
ロールバック処理でINSERTやUPDATEの結果はリセットされますが、変数にセットされたID項目の値はリセットされないので注意してください。(Cloneなどで対応できると思います。)
入力規則エラーなどはDmlExceptionで対応できます。
サンプルです。
All Answers
取引先の情報は更新されないと思います。
取引先も同時に更新したいのであれば、Extensionクラスでsaveメソッドをオーバーライドし、取引先を更新するロジックを組む必要があるかと。
ロールバック処理でINSERTやUPDATEの結果はリセットされますが、変数にセットされたID項目の値はリセットされないので注意してください。(Cloneなどで対応できると思います。)
入力規則エラーなどはDmlExceptionで対応できます。
サンプルです。