here is an example of pagination. Visualforce page.
<apex:page controller="PagingController">
<apex:form >
<apex:pageBlock title="Paging through Categories of Stuff">
<apex:pageBlockButtons location="top">
<apex:commandButton action="{!process}" value="Process Selected"/>
<apex:commandButton action="{!cancel}" value="Cancel"/>
</apex:pageBlockButtons>
<apex:pageMessages />
<apex:pageBlockSection title="Category Results - Page ⌗{!pageNumber}" columns="1">
<apex:pageBlockTable value="{!categories}" var="c">
<apex:column value="{!c.Id}" headerValue="Id"/>
<apex:column value="{!c.Name}" headerValue="Name"/>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageBlock>
<apex:panelGrid columns="4">
<apex:commandLink action="{!first}">First</apex:commandlink>
<apex:commandLink action="{!previous}" rendered="{!hasPrevious}">Previous</apex:commandlink>
<apex:commandLink action="{!next}" rendered="{!hasNext}">Next</apex:commandlink>
<apex:commandLink action="{!last}">Last</apex:commandlink>
</apex:panelGrid>
</apex:form>
</apex:page>
Apex controller
public with sharing class PagingController {
List<cat3__c> categories {get;set;}
// instantiate the StandardSetController from a query locator
public ApexPages.StandardSetController con {
get {
if(con == null) {
con = new ApexPages.StandardSetController(Database.getQueryLocator([Select Id, Name FROM Cat3__c Order By Name limit 100]));
// sets the number of records in each page set
con.setPageSize(5);
}
return con;
}
set;
}
public List<Cat3__c> getCategories() {
categories = new List<Cat3__c>();
for (Cat3__c category : (List<cat3__c>)con.getRecords())
categories.add(category);
return categories;
}
// displays the selected items
public PageReference process() {
for (Cat3__c cw : categories) {
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,cw.name));
}
return null;
}
// indicates whether there are more records after the current page set.
public Boolean hasNext {
get {
return con.getHasNext();
}
set;
}
// indicates whether there are more records before the current page set.
public Boolean hasPrevious {
get {
return con.getHasPrevious();
}
set;
}
// returns the page number of the current page set
public Integer pageNumber {
get {
return con.getPageNumber();
}
set;
}
// returns the first page of records
public void first() {
con.first();
}
// returns the last page of records
public void last() {
con.last();
}
// returns the previous page of records
public void previous() {
con.previous();
}
// returns the next page of records
public void next() {
con.next();
}
// returns the PageReference of the original page, if known, or the home page.
public void cancel() {
con.cancel();
}
}
답변 2개