2016-06-15 6 views
0

案件ページのレイアウトにインラインで表示されるVisualforceページがあります。目標は、機会に関連付けられた各案件ラインアイテム(OLI)を数量入力フィールドで表示することです。私は、VFページからOLIの量を変えることができる必要があります。私は標準機会コントローラから拡張され、すべてが正しく表示されるコントローラを持っていますが、カスタム保存メソッドで保存しようとすると、ページがリフレッシュされ、フィールドへの変更は更新されません。どんな助けもありがとう!1つのVisualforceページで複数の案件ラインアイテムの数を更新します

VFページ:

<apex:page standardController="Opportunity" extensions="OLIController"> 
<apex:form > 
<apex:pageBlock title="Opportunity Products"> 



    <apex:pageBlockTable var="OLI" value="{!OLIs}" id="newProduct"> 
     <apex:column value="{!OLI.name}"/> 
     <apex:column headerValue="Quantity"> 

      <apex:inputfield id="Quantity" value="{!OLI.Quantity}"/> 

     </apex:column> 

    </apex:pageBlockTable> 

    <apex:pageBlockButtons > 
     <apex:commandButton value="Save" action="{!saveIt}" immediate="false"/> 
    </apex:pageBlockButtons> 

</apex:pageBlock> 
</apex:form> 

CONTROLLER:共有クラスOLIController解決{

public ApexPages.StandardController sc; 
public Opportunity Opp {get;set;} 
private Map<Id, OpportunityLineItem> oliItems; 
public List<OpportunityLineItem> OLIlist2 {get ;set;} 

public OLIController(ApexPages.StandardController sc) { 
this.Opp = (Opportunity)sc.getRecord(); 

} 


public List<OpportunityLineItem> getOLIs() { 

    List<OpportunityLineItem> OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id]; 

    return OLIlist2; 

} 
public PageReference saveIt() { 
    List<OpportunityLineItem> listOLI = getOLIs(); 

    update listOLI; 

    return null; 

} 

}

答えて

0

問題に 公共。

コントローラからOLIController scにOLIlist2の「取得」部分のデータを追加するだけで済みます。下記の変更されたコードを見てください。

public with sharing class OLIController { 

public ApexPages.StandardController sc; 
public Opportunity Opp {get;set;} 
public List<OpportunityLineItem> OLIlist2 {get ;set;} 

public OLIController(ApexPages.StandardController sc) { 
this.Opp = (Opportunity)sc.getRecord(); 
OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id]; 
} 


public List<OpportunityLineItem> getOLIs() { 

    List<OpportunityLineItem> OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id]; 

    return OLIlist2; 

} 
public PageReference saveIt() { 
    // List<OpportunityLineItem> listOLI = getOLIs(); 

    update OLIlist2; 

    return null; 

} 

}

関連する問題