Pagination using Apex in Salesforce

Pagination using Apex in Salesforce

Sample Code:

Visualforce page:

<apex:page controller="Sample" >  
    <apex:form >  
        <apex:pageBlock id="details">  
            <apex:pageblockTable value="{!memb}" var="m">  
                <apex:column value="{!m.Name}"/>  
                <apex:column value="{!m.Age__c}"/>              
            </apex:pageblockTable>  
            <apex:pageblockButtons >  
                <apex:commandButton value="<<" rerender="details" action="{!beginning}" disabled="{!prev}"/>  
                <apex:commandButton value="<" rerender="details" action="{!previous}" disabled="{!prev}"/>  
                <apex:commandButton value=">" rerender="details" action="{!next}" disabled="{!nxt}"/>  
                <apex:commandButton value=">>" rerender="details" action="{!end}" disabled="{!nxt}"/>                                      
            </apex:pageblockButtons>  
        </apex:pageBlock>  
    </apex:form>  
</apex:page>  

Apex Class:

public class Sample {      
      
        private integer totalRecs = 0;       
        private integer index = 0;  
        private integer blockSize = 5;           
          
        public sample() {  
      
            totalRecs = [select count() from Member__c];        
        
        }      
          
        public List<Member__c> getMemb() {  
      
            List<Member__c> membs = Database.Query('SELECT Name, Age__c FROM Member__c LIMIT :blockSize OFFSET :index');  
            System.debug('Values are ' + membs);  
            return membs;  
      
        }      
          
        public void beginning() {  
      
            index = 0;  
      
        }  
          
        public void previous() {  
      
            index = index - blockSize;  
      
        }  
          
        public void next() {  
      
            index = index + blockSize;  
      
        }  
      
        public void end() {  
      
            index = totalrecs - math.mod(totalRecs,blockSize);  
      
        }          
          
        public boolean getprev() {  
            if(index == 0)  
                return true;  
            else  
                return false;  
      
        }    
          
        public boolean getnxt() {  
      
            if((index + blockSize) > totalRecs)  
            return true;  
            else  
            return false;  
      
        }      
           
}  

Output:

Leave a Reply