Ricerca…


introduzione

Slaesforce StandardSetController contiene solo l'elenco di sObject, non contiene l'oggetto della classe wrapper. Sotto il codice sorgente viene illustrato l'utilizzo di impaginazione utilizzando la classe wrapper in forza vendite.

Controller di impaginazione

Esempio di codice: ora inizia con Creazione del controller di impaginazione

public with sharing class Pagination {

}

mostrerò tutti i contatti sotto forma di impaginazione e dovrebbe essere presente una casella di controllo per ogni contatto da selezionare o deselezionare il contatto per eseguire l'operazione di eliminazione sui contatti. Quindi ho bisogno di creare una classe wrapper per mantenere il contatto e la variabile booleana per la selezione. Innanzitutto creare la classe Wrapper per l'impaginazione del controller Inserisci il codice sotto il controller di paginazione.

 public class contactWrapper{
        public Contact cont {get;set;}
        public Boolean isSelected{get;set;}
        public contactWrapper(contact c,Boolean s)
        {
            cont=c;
            isSelected=s;
        }
    }

Recupero dei dati in Apex per impaginare con l'aiuto di StandardSetController. StandardSetController è uno strumento estremamente potente con funzionalità integrate che è possibile utilizzare per semplificare notevolmente il codice personalizzato nelle pagine Visualforce. Poiché il server restituisce solo i dati per la pagina richiesta, StandardSetController può ridurre significativamente lo stato della visualizzazione, soprattutto rispetto allo stato di visualizzazione che si otterrebbe durante l'utilizzo di SOQL.

 Public Integer noOfRecords{get; set;} // Future reference in Visual force Page
    Public Integer size{get;set;}  // Future reference in Visual force Page
    public final Integer Page_Size=10; // Number records in a Page should be displayed 

 public ApexPages.StandardSetController setCon {
        get{
            if(setCon == null){
                size=Page_Size;
                string queryString = 'Select Id,Name, Email, Birthdate, Phone, MobilePhone from Contact order by Name';
                setCon = new ApexPages.StandardSetController(Database.getQueryLocator(queryString));
                setCon.setPageSize(size);
                noOfRecords = setCon.getResultSize();
            }
            return setCon;
        }set;
    }

Ora hai i contatti nel setCon Variabile, ogni volta che richiedi setCon.getRecords () recupererà i primi 10 record di contatto dal setCon. Qui ho creato una semplice classe wrapper per mostrarti la demo. È possibile creare la propria classe wrapper in base ai requisiti. Ma devi sempre essere consapevole del fatto che ApexPages.StandardSetController contiene solo l'elenco di sObject, non manterrà la lista di oggetti di classe wrapper. Questa è la ragione per cui ho scritto un codice extra qui sotto per realizzare questo futuro in modo diverso. Sotto il codice convertire l'elenco dei contatti in un elenco di oggetti di classe wrapper, in modo che quando si chiamano i contatti nella pagina visual force riceverà l'elenco di oggetti di classe wrapper.

 public list<contactWrapper> contWpr{get;set;} 
    public set<id> selectedContactIds{ get;private set;} // to maintain state of the selected contact
                                                         // through out paginating 

    public Pagination() {
       selectedContactIds=new  set<id>();
    }

      Public list<contactWrapper> getContacts(){
         contWpr =new list<contactWrapper>();
        for(Contact c: (List<Contact>)setCon.getRecords())
            if(selectedContactIds.contains(c.id))
                contWpr.add(new contactWrapper(c,true));
                else
                contWpr.add(new contactWrapper(c,false));
        return contWpr;
    }

Ora hai scritto il codice per la generazione dei risultati Ma come navigare attraverso la pagina? Questo può essere fatto con passo facile con ApexPages.StandardSetController.Guarda il codice di bellezza sottostante di StandardSetController, Non c'è bisogno di mantenere il numero di pagina, offset e limite ecc. Basta usare i metodi di StandardSetController. Copia il codice seguente nel controller Pagination.

public Boolean hasNext {
        get {
            return setCon.getHasNext();
        }
        set;
    }
    public Boolean hasPrevious {
        get {
            return setCon.getHasPrevious();
        }
        set;
    }

    public Integer pageNumber {
        get {
            return setCon.getPageNumber();
        }
        set;
    }

    public void first() {
        setCon.first();
        // do you operation here 
    }

    public void last() {
        setCon.last();
            // do you operation here 
    }

    public void previous() {
        setCon.previous();
            // do you operation here 
    }

    public void next() {
        setCon.next();
            // do you operation here 
    }

Hai quasi finito con Paginare i contatti. Ultimi metodi che ho aggiunto per soddisfare la mia intera funzionalità di pagina. Come menzionato in precedenza, abbiamo una casella di controllo aggiuntiva per selezionare il contatto ed eseguire un'operazione di eliminazione sui contatti selezionati.

public void contactSelection()
    {
        Id id=(Id)ApexPages.currentPage().getParameters().get('cId');
        if(selectedContactIds.contains(id))
            selectedContactIds.remove(id);
            else
            selectedContactIds.add(id);
    }

 public void deleteContacts()
    {
        List<contact> contactToDelete=[select id from contact where id in :selectedContactIds];
        if(contactToDelete.size()!=0)  //   if(!contactToDelete.isEmpty()) // Best Practice 
           { 
                try {  delete contactToDelete; }  // You may get Exception if you try to delete the 
                                                // related contact ,include try block to avoid error.
                catch(exception ex){ System.debug(ex); }
                refresh();
           }
    }   

 public pageReference refresh() {
        setCon = null;
        selectedContactIds=new set<id>();
        getContacts();
        setCon.setPageNumber(1);
        return null;
    }


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow