2016-06-15 10 views
0

Ich habe eine Visualforce-Seite, die auf dem Opportunity-Seitenlayout inline angezeigt wird. Das Ziel besteht darin, jede Opportunity-Werbebuchung (OLI), die der Opportunity zugeordnet ist, mit einem Eingabefeld für die Anzahl anzuzeigen. Ich muss in der Lage sein, die Menge des OLI von der VF-Seite zu ändern. Ich habe einen Controller, der von dem Standard-Opportunity-Controller erweitert wird, und alles wird korrekt angezeigt, aber wenn ich versuche, mit meiner benutzerdefinierten Speichermethode zu speichern, wird die Seite aktualisiert und die Änderungen an den Feldern werden nicht aktualisiert. Jede Hilfe wird geschätzt!Aktualisiere Menge von mehreren Werbebuchungen auf einer einzelnen Visualforce-Seite

VF SEITE:

<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> 

REGLER: Öffentlichkeit mit Sharing-Klasse 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; 

} 

}

Antwort

0

Problem gelöst;

Nur benötigt, um die Daten aus dem "Get" Teil der OLIlist2 von der Steuerung zum OLIController sc hinzuzufügen. Siehe den modifizierten Code unten.

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; 

} 

}