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 existing record

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/
praveenpropraveenpro

Thanks for reply..... but its not working the functionality is like based upon field data i wil get some records for those records i need to provide pagination....

Dhaval PanchalDhaval Panchal
i m using this method for any type of pagination. Give your requirement in detail.
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.

Avidev9Avidev9
Well there are lot of jquery plugins available that can do client side sorting pagination etc. So you have to decide whether to go for a client side or choose server side (standardsetcontroller). If you are nto showing much data on page then you can use client side.

Have a look here http://blogforce9.blogspot.in/2013/06/pageblocktable-enhancer-v22-much-needed.html