i am trying to do pagination for the following page but i dont know where i went wrong the pagination is not working. And i want to show 5 records per page,.so how to do can anyone help!!!!

<apex:pageBlock >
    <center><table width ="90%" cellspacing="0" cellpading="0" border ="2">

    <div><h2><center>Job Openings</center></h2></div><br/>
    <tr><td width="10%"><b><center>Job Id</center></b></td><td width="10%"><b><center>Job Title</center></b></td><td width="5%"><b><center>experience (yrs)</center></b></td>
    <td width="10%"><b><center>Company</center></b></td><td width="20%"><b><center>skills</center></b></td> <td width="5%"><b><center>vacancies</center></b></td><td width="5%"><b><center>location</center></b></td></tr>
    <apex:repeat value="{!jbList }" var="jb">

    <td><center>{!jb.SCSCHAMPS__Desired_Skills__c}</center></td><td><center>{!jb.SCSCHAMPS__Postions__c}</center></td><td><center>{!jb.Work_Location__c}</center></td> </tr>
    <apex:commandButton action="{!Beginning}"  value="<<" disabled="{!disablePrevious}" reRender="myPanel,myButtons"/>
            <apex:commandButton action="{!Previous}" title="Previous" value="<"/>        
            <apex:commandButton action="{!Next}" title="Next" value=">" />
            <apex:commandButton action="{!End}" title="End" value=">>" disabled="{!disableNext}" reRender="myPanel,myButtons"/>



public with sharing class Jobs1 {

    public String var{set; get;}
    public List < SCSCHAMPS__Job__c> jbList {get;set;}

   private integer counter=0; 
   private integer list_size=5;
   public integer total_size; 
   public Jobs1(){
   total_size=[select count() from SCSCHAMPS__Job__c where SCSCHAMPS__Stage__c='Open' ];
   public SCSCHAMPS__Job__c[] getNumbers() {
      try {
         SCSCHAMPS__Job__c[] numbers = [select id,Name 
                                from SCSCHAMPS__Job__c 
                                order by Name
                                limit :list_size 

         return numbers;
      } catch (QueryException e) {
         return null;
   public PageReference Beginning() { //user clicked beginning
      counter = 0;
      return null;

   public PageReference Previous() { //user clicked previous button
      counter -= list_size;
      return null;

   public PageReference Next() { //user clicked next button
      counter += list_size;
      return null;

   public PageReference End() { //user clicked end
      counter = total_size - math.mod(total_size, list_size);
      return null;

   public Boolean getDisablePrevious() { 
      //this will disable the previous and beginning buttons
      if (counter>0) return false; else return true;

   public Boolean getDisableNext() { //this will disable the next and end buttons
      if (counter + list_size < total_size) return false; else return true;

   public Integer getTotal_size() {
      return total_size;

   public Integer getPageNumber() {
      return counter/list_size + 1;

   public Integer getTotalPages() {
      if (math.mod(total_size, list_size) > 0) {
         return total_size/list_size + 1;
      } else {
         return (total_size/list_size);

    public Jobs1(ApexPages.StandardController controller) {
    jbList = new List < SCSCHAMPS__Job__c >();
    List < SCSCHAMPS__Job__c > jb= new list < SCSCHAMPS__Job__c >();
    //this.var= apexPages.currentpage().getParameters().get('id');
   jbList= [select id,Name,SCSCHAMPS__Experience_Required__c,SCSCHAMPS__Account__r.Name,SCSCHAMPS__Desired_Skills__c,SCSCHAMPS__Account__c,Work_Location__c  ,SCSCHAMPS__Postions__c ,SCSCHAMPS__Job_Title__c
                                                         from SCSCHAMPS__Job__c where SCSCHAMPS__Stage__c='Open' ];
    //totalSize = jbList.size();


You should leverage StandardSetController. It will take care all pagination related functionalities which you are trying to achieve in a very simplified way.

Based on your dynamic query, the results will be assigned to StandardSetController instance.

public ApexPages.StandardSetController setCon{get;set;}
String querystr = 'select id,Name,SCSCHAMPS__Experience_Required__c,SCSCHAMPS__Account__r.Name,SCSCHAMPS__Desired_Skills__c,SCSCHAMPS__Account__c,Work_Location__c  ,SCSCHAMPS__Postions__c ,SCSCHAMPS__Job_Title__c
                   from SCSCHAMPS__Job__c';

setCon = new ApexPages.StandardSetController(Database.getQueryLocator(querystr));

You can also, limit the records on the page, based on the dropdown, default is shown 10 records.

Refer my answer at this question: Pagination is not working for my VF page

or otherwise refer my blog Custom Controller Pagination - easiest way

| improve this answer | |
  • Please quote relevant portions along with links – Eric Apr 18 '17 at 5:59
  • @Eric, actually its better rewrite the code from beginning, thats why I have suggested that – Santanu Boral Apr 18 '17 at 15:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.