function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
niharnihar 

Pagienation for class

Hi all ,
Can anyone help me with my code for pagienation of records........
Thanks in Advance.............
 apex class :
public class objectcontroller
{
    public List<selectOption> objects{get; set;}
    public string selected{get; set;}
    public List<contact> obj1{get; set;}
    public list<lead> obj2{get; set;}
    public boolean obj1Status{get; set;}
    public boolean obj2Status{get; set;}
    public list<wrapcontact> wrapcon{get;set;}
    public list<wrapLead> wrapLd{get;set;}
    public objectcontroller()
    {
        obj1Status=false;
        obj2Status=false;
        objects= new List<selectOption>();
        objects.add(new selectOption('contact','contact'));
        objects.add(new selectOption('lead','lead'));
        wrapcon = new List<wrapcontact>();
        wrapLd = new list<wrapLead>();
    }
    public pageReference getRecordofObject()
    {
         if(selected=='contact')
        {
            for(contact c :[select id,lastname,Email from contact limit 100]){
            wrapcon.add(new wrapcontact(c));
            }
            obj1Status=true;
            obj2status=false;
        }   
        else
        {
            for(lead l:[select name,company,Status from lead limit 100]){
                wrapLd.add(new wrapLead(l));
            }
            obj1status=false;
            obj2Status=true;
        }
        return null;
    }
    public class wrapcontact {
        public contact con {get; set;}
        public Boolean selected {get; set;}
 
        public wrapcontact(contact a) {
            con = a;
            selected = false;
        }
    }
    public class wraplead{
        public lead Ld {get; set;}
        public Boolean selected {get; set;}
 
        public wraplead(lead a) {
            Ld = a;
            selected = false;
        }
    }
    
}

Visulaforce page :
<apex:page controller="objectcontroller" showHeader="false">
    <apex:form >
        <apex:pageBlock title="Select a object">
            <apex:selectList value="{!selected}" size="1">
                <apex:selectOptions value="{!objects}"/>
            </apex:selectList>
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton action="{!getRecordofObject}" value="Show Records" rerender="cb"/>
            </apex:pageBlockButtons>
        </apex:pageBlock>
        <apex:outputPanel >
            <apex:pageBlock id="cb">
                <apex:pageBlockSection >
                    <apex:pageBlockTable value="{!wrapcon}" var="ob1" rendered="{!obj1Status}">
                        <apex:column >
                            <apex:inputCheckbox value="{!ob1.selected}" id="inputId"/>
                        </apex:column>
                        <apex:column value="{!ob1.con.id}"/>
                        <apex:column value="{!ob1.con.lastname}"/>
                        <apex:column value="{!ob1.con.Email}"/>
                    </apex:pageBlockTable>
                </apex:pageBlockSection>  
                <apex:pageBlockSection >
                    <apex:pageBlockTable value="{!wrapLd}" var="ob2" rendered="{!obj2Status}">
                        <apex:column >
                            <apex:inputCheckbox value="{!ob2.selected}" id="inputId"/>
                        </apex:column>
                        <apex:column value="{!ob2.Ld.id}"/>
                        <apex:column value="{!ob2.Ld.company}"/>
                        <apex:column value="{!ob2.Ld.status}"/>
                    </apex:pageBlockTable>
                </apex:pageBlockSection>
            </apex:pageBlock>
        </apex:outputPanel>
    </apex:form>

Thanks in advance........
Ajay K DubediAjay K Dubedi
Hi nihar,

I have gone through your query and writing an example of pagination in the VF page.
I hope it will work for you as you desire.

VF page-
<apex:page controller="contact_List_controller">
    
    <apex:form >
    <apex:pageBlock title="Contact list " id="con_id" >
     <apex:dataList value="{!Contacts}" rendered="true" var="con" style="border-style:solid"   >
         <apex:outputLabel value="{!con.name}" >  </apex:outputLabel>
        </apex:dataList>   
        <apex:commandButton action="{!Last}" value="Last Page" reRender="con_id" disabled="{!NO_Next}" /> &nbsp;&nbsp;
        <apex:commandButton action="{!previous}" value="Prev" reRender="con_id" disabled="{!NO_Prev}" /> &nbsp;&nbsp;
        <apex:commandButton action="{!Next}" value="Next" reRender="con_id" disabled="{!NO_Next}" /> &nbsp;&nbsp;
        <apex:commandButton action="{!First}" value="First page" reRender="con_id" disabled="{!NO_prev}" />&nbsp;&nbsp;
     pages:   <apex:outputText value="{!totalPages}"  ></apex:outputText>
        </apex:pageBlock>
    </apex:form>
</apex:page>
------------------------------------------------------------
Controller class-
public class contact_List_controller {
    public integer Limitsize=10;
    public integer count=0;
    public list<contact> contactList{get;set;}
  
    
    public  contact_List_controller() {
        
        contactList=[select name from contact ];
    }
    
    public list<contact> getContacts(){
       list <contact> conList = new list<contact>();
        for(integer i=count;i<limitsize;i++)
        {
            conList.add(contactList[i]);
        }
        return conList;
    }
    
    public void last()
    {
        count= contactList.size()-math.mod(contactList.size(),10);
        limitsize = contactList.size();
    }
    public void first()
    {
        count =0;
        limitsize=10;
    }
    
    public void next()
    {
        if(limitsize==contactList.size()-math.mod(contactList.size(),10))
        {
            count=count+10;
            limitsize=contactList.size();
        }
        else
        {
            count=count+10;
            limitsize=limitsize+10;
        }
    }
    
    public void previous(){
        
        if(count==contactList.size()-math.mod(contactList.size(),10))
        {
           limitsize = count;
            count=count-10;
           
        }
        else
        {
           count= count-10;
            limitsize=limitsize-10;
        }
    }
    
    public boolean getNO_Next()
    {
        if(limitsize==contactList.size())
            return true;
        else
            return false;
    }
    
    public boolean getNO_prev()
        {
            if(count==0)
                return true;
            else
                return false;
        }
    
    
    
    public Integer getTotalPages()
    {
         integer rem= math.mod(contactList.size(),10);
        Integer quo = contactList.size() / 10;
        if(rem!=0)
        {
            quo=quo+1;
            return quo;
        }
        else
            return quo;
    }
}



If you still have more queries please let me know.

I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.

Thanks and Regards,
Ajay Dubedi
www.ajaydubedi.com
Deepali KulshresthaDeepali Kulshrestha
Hi nihar,

I have gone through your problem please refer below code:
Visualforce page:-

<apex:page controller="Q5">  
    <apex:form >  
        <apex:pageBlock id="details" title="Details">
            
            <apex:dataList value="{!Account}" var="acc" > 
                <apex:outputText value="{!acc.Id}" /> &nbsp;&nbsp; 
            <apex:outputText value="{!acc.Name}"/> 
                </apex:dataList>
        
        <apex:pageBlockButtons>
            <apex:commandButton value="First" rerender="details" action="{!beginning}" disabled="{!prev}"/>  
            <apex:commandButton value="Previous" rerender="details" action="{!previous}" disabled="{!prev}"/>  
            <apex:commandButton value="Next" rerender="details" action="{!next}" disabled="{!nxt}"/>  
            <apex:commandButton value="Last" rerender="details" action="{!end}" disabled="{!nxt}"/> 
        </apex:pageBlockButtons>
    </apex:pageBlock>
</apex:form>  
</apex:page>



Apex class:

public class Test {
    private integer totalRecords = 0;       
    private integer index = 0;  
    private integer blockSize = 10;           
      
    public Test() {  
        totalRecords = [select count() from Account limit 200];        
    }       
    public List<Account> getAccount() {  
        List<Account> accRecords = Database.Query('SELECT Id,Name FROM Account LIMIT : blockSize OFFSET :index');  
        System.debug('Values are ' + accRecords);  
        return accRecords;  
    }      
    public void beginning() {  
        index = 0;  
    }   
    public void previous() { 
        index = index - blockSize;  
    }  
    public void next() {  
        index = index + blockSize;  
    }  
    public void end() {  
        index = totalRecords - math.mod(totalRecords,blockSize);  
    }            
    public boolean getprev() {  
        if(index == 0)  
            return true;  
        else  
            return false;  
    }     
    public boolean getnxt() {  
        if((index + blockSize) > totalRecords)  
        return true;  
        else  
        return false;  
    }      
}

I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.

Thanks and Regards,
Deepali Kulshrestha
www.kdeepali.com
niharnihar
Hi Ajay Dubedi,
                       Thanks for your code but i am facing error like 
List index out of bounds: 2
An unexpected error has occurred. Your development organization has been notified. and also i want to add wraper class to it..
can you go through it........................................................