DocSF

DocSF

Did You Know?

You can create any type of product documentation with Docy

SalesForce Apex VisualForce: Come usare una Wrapper Class

Codice VisualForce

Potresti cercare anche Come passare i valori da una pagina visualforce ad un sObject nel suo controller  o anche Binding visualforce sObject e anche Come astrarre dei valori in una pagina visualforce passandoli ad un wrapper che crea un sObject

La definizione di sObject è di un oggetto generico

<apex:page lightningStylesheets="true" standardController="Acquisto__c" extensions="CassaInputFieldCnt" docType="html-5.0">           
    <script  type="text/javascript" src="http://ajax.googaleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script  type="text/javascript">
    	function aggiornaQnt(val,id){         
        	console.log(val);
        	console.log(id);
        }
    
    	$("#qnt").bind('keyup mouseup', function () {
                console.log("changed");            
        });
    </script>
    <apex:form >
        
        <apex:pageBlock id="cassa" mode="mailDetail">
            <apex:pageBlockSection columns="1" id="contentCassa" title="Seleziona libri">
                
                <!-- Ricerca libro -->
                <apex:pageBlockSectionItem >
                    <apex:inputField value="{!RicercaLibri.Libro__c}" />                    
                </apex:pageBlockSectionItem>               
                
                <!-- Acquisizione Libro -->
                <apex:pageBlockSectionItem >                    
                    <apex:commandButton value="Aggiungi"  action="{!Aggiungi}" reRender="ListaLibriSelezionati, Totale" />
                </apex:pageBlockSectionItem>                

                
                <apex:pageBlockSectionItem >
                 	
                    <apex:pageBlockTable value="{!ListaLibriSelezionati}" var="Libro" width="100%" id="ListaLibriSelezionati">
                	
                       <apex:column width="100%" headerValue="Libri disponibili" value="{!Libro.Titolo}"/>
                       <apex:column width="100%" headerValue="Quantità">
                           <apex:outputpanel >
                               <apex:inputText html-min="1" html-type="number" value="{!Libro.Qnt}"  style="width:80px!important;" />                                 
                               <apex:actionSupport event="onclick" action="{!ModificaColli}" rerender="ListaLibriSelezionati,Totale">
                                   <apex:param name="IdLibro" value="{!Libro.id}" />
                                   <apex:param name="QntLibro" value="{!Libro.Qnt}" />
                               </apex:actionSupport>
                           </apex:outputpanel>
                           
                       </apex:column>
                       <apex:column width="100%" headerValue="Prezzo">
                           <apex:outputText id="prezzo">{!Libro.Prezzo} <b>€</b></apex:outputText>                           
                       </apex:column>
                       
                     </apex:pageBlockTable>
                    
                </apex:pageBlockSectionItem>
                                
            </apex:pageBlockSection>
            
			<!-- inizio footer con riepilogo -->            
            <apex:pageBlock >
                <apex:pageBlockSection columns="3">
                    <apex:pageBlockSectionItem />
                    <apex:pageBlockSectionItem />
                                        
                    <apex:pageBlockSectionItem >
                        <apex:outputPanel id="Totale" rendered="true">
                            Totale: <b><apex:outputText >{!Totale}</apex:outputText> €</b>
                        </apex:outputPanel>
                    </apex:pageBlockSectionItem>
                    
                    <apex:pageBlockSectionItem />
                    <apex:pageBlockSectionItem />
                    <apex:pageBlockSectionItem >
                            <apex:commandButton value="PAGA"/>                        
                    </apex:pageBlockSectionItem>
                    
                </apex:pageBlockSection>
            </apex:pageBlock>
            <!-- fine footer con riepilogo -->            
            
        </apex:pageBlock>                
    </apex:form>
</apex:page>

Wrapper Class

public with sharing class CassaInputFieldCnt {
    
    // Libri presenti nell'inputField 
    public Acquisto__c RicercaLibri {get;set;}
    
    // Libri aquisiti da inputField
    public Libro__c AcquisizioneLibri {get;set;}
    
    // Libri inseriti in cassa (precedentemente acquisiti)
    public List<wrapObjectLibri> ListaLibriSelezionati {get;set;}
    
    // Totale complessivo
    public Double  Totale {get;set;} 
    
    // Costruttore classe generale   
    public CassaInputFieldCnt(ApexPages.StandardController sc) {
        
        RicercaLibri = new Acquisto__c(); 
        AcquisizioneLibri = new Libro__c();
        ListaLibriSelezionati = new List<wrapObjectLibri>();
        Totale = 0; 
                
    }
    
    // Metodo al click di bottone Aggiungi
    public void Aggiungi(){
        
        // Id libro selezionato in inputField
        ID idLibroSelezionato = RicercaLibri.Libro__c;
        
        // Retrive dati libro acquisito
        AcquisizioneLibri = [select id,Giacenza__c,Prezzo__c,Name 
                              FROM Libro__c 
                              where id=:idLibroSelezionato];
        
        // Instanza classe Wrapper
        wrapObjectLibri libro = new wrapObjectLibri();
        
        // Crezione sObject
        libro.Id = AcquisizioneLibri.id;
        libro.Titolo = AcquisizioneLibri.Name;
        libro.Qnt = 1;
        libro.Prezzo = AcquisizioneLibri.Prezzo__c;
        
        ListaLibriSelezionati.add(libro);
        
        
        totale += AcquisizioneLibri.Prezzo__c;
            
    }
    
    // Metodo al cambio della quantità
    public void ModificaColli(){
        
        Id IdLibro = ApexPages.currentPage().getParameters().get('idLibro');
        Integer QntLibro = integer.valueOf(ApexPages.currentPage().getParameters().get('QntLibro'))+1;        
        System.debug('Id: '+IdLibro+' Quantità: '+QntLibro);
        System.debug(ListaLibriSelezionati);
        
        for(wrapObjectLibri book:ListaLibriSelezionati){
            if(book.id == IdLibro){
                book.Prezzo *= QntLibro;
                book.Qnt = QntLibro;
            }
        }
        
        Totale = 0;
        for(wrapObjectLibri totaleScontrino:ListaLibriSelezionati){
            Totale += totaleScontrino.Prezzo;
        }
        
        
    }	
    
    // Metodo al click del bottone Paga    
    public void ProcessPaga(){
      // aggiorno i record per Acquisti__c
      // aggiorno i record per Scontrino__c
    }
    
    // Apex Wrapper Class
    public class wrapObjectLibri {
		
		public Id  Id {get; set;}
        public String  Titolo {get; set;}
        public Integer Qnt {get; set;}
        public Double  Prezzo {get; set;}

        public wrapObjectLibri(){ }
	} 
    	 
}

Related Post

Come creare un package.xml in visual studio

Di seguito un esempio di package.xml da usare per recup...

Salesforce: Verifica le scratch org create ne

You can view and delete your scratch orgs and their ass...

Appunti creazione Lightning Aura Component in

Questi appunti sono presi durante lo studio di Salesfor...