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(){ }
}
}