2016-06-15 3 views
0

기회 페이지 레이아웃에 표시되는 Visualforce 페이지가 있습니다. 목표는 기회와 관련된 각 기회 라인 항목 (OLI)을 수량 입력 필드와 함께 표시하는 것입니다. 나는 VF 페이지에서 OLI의 양을 바꿀 수 있어야합니다. 표준 기회 컨트롤러 확장 된 컨트롤러 및 모든 올바르게 표시 할 수 있지만 사용자 지정 저장 메서드로 저장하려고하면 페이지 새로 고침 및 필드 변경 내용이 업데이트되지 않습니다. 어떤 도움을 주셔서 감사합니다!단일 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

문제와 공개;

OLIlist2의 "get"부분의 데이터를 컨트롤러에서 OLIController sc로 추가하기 만하면됩니다. 아래 수정 코드를 참조하십시오.

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; 

} 

}