Zoeken…


Invoering

Slaesforce StandardSetController bevat alleen lijst met sObject, het bevat geen lijst met het wrapper-klasseobject. Onderstaande broncode toont het gebruik van Paginating met behulp van Wrapper Class in sales-force.

Paginatiecontroller

Codevoorbeeld: begin nu met het maken van de Pagination Controller

public with sharing class Pagination {

}

ik ga alle contacten in de vorm van paginering tonen en er moet een selectievakje zijn voor elk contact dat moet worden geselecteerd of deselecteer contact om verwijderingsbewerking op contacten uit te voeren. Dus moet ik een wrapper-klasse maken om contact en Booleaanse variabele voor selectie vast te houden. Maak eerst de Wrapper-klasse voor de controller Paginering Voer de onderstaande code in de paginatiecontroller in.

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

Nu gegevens ophalen in Apex om te pagineren met behulp van StandardSetController. De StandardSetController is een uiterst krachtige tool met ingebouwde functionaliteit die u kunt gebruiken om de aangepaste code in uw Visualforce-pagina's aanzienlijk te vereenvoudigen. Omdat de server alleen de gegevens voor de gevraagde pagina retourneert, kan de StandardSetController de weergavestatus aanzienlijk verminderen, vooral in vergelijking met de weergavestatus die u zou krijgen tijdens het gebruik van 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;
    }

Nu hebt u de contacten in de variabele setCon, wanneer u wordt gevraagd om setCon.getRecords (), worden de eerste 10 contactrecords opgehaald uit de setCon. Hier heb ik een eenvoudige wrapper-klasse gemaakt om je de demo te laten zien. U kunt uw eigen wrapper-klasse maken op basis van vereiste. Maar u moet er altijd rekening mee houden dat ApexPages.StandardSetController alleen de lijst met sObject bevat en niet de lijst met het wrapper-klasseobject. Dat is de reden dat ik hieronder extra code heb geschreven om deze toekomst op een andere manier te bereiken. Onderstaande code converteert lijst met contactpersonen in lijst met wrapper-klasseobjecten, zodat wanneer u contactpersonen oproept in Visual Force-pagina, deze de lijst met wrapper-klasseobject ontvangt.

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

Nu heb je code geschreven voor het genereren van resultaten Maar hoe navigeer je over de pagina? Dit kan worden gedaan met een eenvoudige stap met ApexPages.StandardSetController. Kijk naar de onderstaande codeschoonheid van de StandardSetController, het is niet nodig om het paginanummer te handhaven, te verschuiven en te beperken, enz. Gebruik gewoon de StandardSetController-methoden. Kopieer de onderstaande code naar Pagination controller.

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 
    }

Je bent bijna klaar met het pagineren van de contacten. Laatste methoden die ik heb toegevoegd om mijn volledige paginafunctionaliteit te vervullen. Zoals ik eerder vermeld, hebben we een extra selectievakje voor het selecteren van contact en voeren we verwijderingshandelingen uit op geselecteerde contactpersonen.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow