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
praveenpropraveenpro 

Pagination for specific records

hi,

                    My requirement is i have 6 fields(Ptype, region, topic, etc)   in VF page , based on the field data i will get the records, for those records i need to give the pagination like ( first, next, previous, last). 

Dhaval PanchalDhaval Panchal
Use ApexPages.StandardSetController for pagination.

refer below link:
http://hisrinu.wordpress.com/2012/01/09/pagination-using-standardsetcontroller/
Dhaval PanchalDhaval Panchal

Try below code.

 

add below code to your apex class with all variable.

 

    public integer pageNumber {get;set;}
    private integer pageSize;
    public boolean nextPage {get;set;}
    public boolean previousPage {get;set;}
    public boolean isPaging {get;set;}
    public integer totalPage {get;set;}
    public integer totalRecords {get;set;}
    public integer FromRecords {get;set;}
    public integer ToRecords {get;set;}   
	//call this function when ever you requery
    void resetPaging(){
        pageNumber=0;
        pageSize = 20;
        totalPage=0;
        totalRecords=0;
        FromRecords=0;
        ToRecords=0;
        nextPage = false;
        previousPage = false;
        isPaging = false;
    }
	//here lstComponent is main result, you can use your list 
    Public List<Component> getResultWithPaging(){
        try{
            List<Component> lstPaging = new List<Component>();
            totalRecords = lstComponent.size();
            if (pageNumber == null || pageNumber == 0) 
            {
                pageNumber = 2;
                PreviousPage();
            }
            FromRecords = ((pageNumber - 1) * pageSize) + 1;
            ToRecords = FromRecords + pageSize -1 ;
            
            if (ToRecords>totalRecords) ToRecords = totalRecords;
    
            if (lstComponent.size() <= pageSize)
            {
                totalPage = 1;
                nextPage = true;
                previousPage = true;       
            }
            else
            {
                totalPage = Integer.valueof(lstComponent.size()/pageSize);
                if (Math.mod(lstComponent.size(), pageSize) > 0)
                {
                    totalPage++;
                }
            }
            
            integer totalCountForPage = pageNumber * pageSize;
            if (lstComponent.size() < pageSize)
            {
                totalCountForPage = lstComponent.size();
            }
            
            for (integer i=((pageNumber - 1) * pageSize);i<totalCountForPage;i++)
            {
                if (i < lstComponent.size()) {
                    lstPaging.add(lstComponent[i]);
                }
            }
            return lstPaging;
        }
        catch(Exception ex){
            ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,ex.getMessage()));
            return null;
        }
    }

    public void NextPage()
    {
        if (pageNumber < totalPage ) 
            pageNumber++;
            
        if (pageNumber < totalPage) 
        {
            nextPage = false;
            if (pageNumber > 1) 
            {
                previousPage = false;
            } 
        }
        else 
        {
            nextPage = true;
            previousPage = false;
        }
    }
    public void PreviousPage()
    {
        if (pageNumber > 0) 
        {
            pageNumber--;
        }
        if (pageNumber > 1) 
        {
            previousPage = false;
            if (pageNumber < totalPage) 
            {
                nextPage = false;
            }
        }
        else 
        {
            previousPage = true;
            nextPage = false;
        }
    }    
	

 below is vf page code in which paging is used

 

<apex:pageBlock id="pbResult">
	<apex:pageBlockTable id="tblResult" value="{!ResultWithPaging}" var="cmp">
		<apex:column headerValue="Component Name">
			<apex:outPutLink value="/{!cmp.id}">{!cmp.name}</apex:outPutLink>
		</apex:column>
		<apex:column headerValue="Component Type">
			<apex:outputText value="{!cmp.type}"/>
		</apex:column>
	</apex:pageBlockTable>
	
	<table width="100%">
		<tr>
			<td>
				<apex:outputPanel id="PageInfo">
					<strong>Page:&nbsp;{!pageNumber}/{!totalPage}&nbsp;&nbsp;&nbsp;&nbsp;Records:&nbsp;{!FromRecords}-{!ToRecords}&nbsp;({!TotalRecords})</strong>
				</apex:outputPanel>
			</td>

			<td align="right">
				<apex:outputPanel id="pnlPaging">
					<apex:commandButton value="Previous" title="Previous" disabled="{!previousPage}" action="{!PreviousPage}" reRender="pbResult,msg" status="status" />
					<apex:outputText value="Previous" title="Previous" rendered="false" />&nbsp;|&nbsp;&nbsp;
					<apex:commandButton value="Next" title="Next" disabled="{!nextPage}" action="{!NextPage}" reRender="pbResult,msg" status="status" />
					<apex:outputText value="Next" title="Next" rendered="false" />
				</apex:outputPanel>
			</td>
		</tr>
	</table> 
</apex:pageBlock>

 I hope this will be helpfull to you.