Saturday, April 6, 2013

Pagination


Visualfroce Page:

<apex:page standardController="Lead" extensions="pagination_controller" sidebar="false" showHeader="false">
<apex:form id="frm">
   <apex:pageBlock title="Pagination" >
       <apex:pageblockSection columns="1">
     <!-- <apex:repeat value="{!mapLeads[selectedPage]}" var="a">
                <apex:outputlabel value="{!a.name},{!a.email}"></apex:outputlabel>            
            </apex:repeat> -->

           <apex:pageblocktable value="{!mapLeads[selectedpage]}" var="a">
                <apex:column value="{!a.name}"/>
                <apex:column value="{!a.email}"/>
            </apex:pageblocktable>

           <apex:selectList value="{!selectedPage}" size="1" multiselect="false">
               <apex:SelectOptions value="{!pagesOptions}"></apex:SelectOptions>
            <apex:actionSupport event="onchange" action="{!nextPage}" reRender="frm" />
            </apex:selectList>  
      </apex:pageblockSection>
  </apex:pageBlock>
 </apex:form>  
</apex:page>

Apex Class:


public with sharing class pagination_controller {

    public Integer noOfRecordPerPage {get;set;}
    public Integer selectedPage {get;set;}
    public Map<Integer, List<Lead >> mapLeads{get;set;}
    public List<selectoption> pagesOptions {get;set;}
    public pagination_controller(ApexPages.StandardController controller) {
        mapLeads =new Map<Integer, List<Lead >> ();
        noOfRecordPerPage = 10;
        selectedPage = 1;
        List<Lead> listLeads = [select Name, Fax, Email from Lead limit 21];
        if(listLeads.size()>0){
            pagesOptions = new List<SelectOption>();
            integer total_no_of_pages = listLeads.size()/noOfRecordPerPage;                 
            if(math.mod(listLeads.size(),noOfRecordPerPage) > 0){
               total_no_of_pages = total_no_of_pages +1;
            }
            integer pageStartValue = 0;
            integer pageEndValue = noOfRecordPerPage;
          for(integer i = 0; i<total_no_of_pages ; i++){
                integer counter = i+1;
                pagesOptions.add(new SelectOption(counter+'',counter +''));
                List<Lead> leadList = new List<Lead>();
               for(integer j = pageStartValue ; j< pageEndValue; j++){
                        try{
                            leadList.add(listLeads[j]);
                        }
                        catch(Exception e) {
                        }
                }
                pageStartValue = pageEndValue;
                pageEndValue = noOfRecordPerPage*(i+2);
            mapLeads.put(counter,leadList);
           }
        }
  }  
    public void nextPage(){}

}

No comments:

Post a Comment