学习完这篇博客,你能够使用Force.com标准的分页功能来实现数据列表的分页,你会学习如下知识点:
1、VF standard list controller,它的功能比standard (record) controller功能更加丰富;
2、理解ajax如何在页面中执行,以及执行的范围,通过id关联;
3、了解与页面相关的数据的含义,比如:PageNumber、ResultSize、PageSize、itemValue;
4、你会明白如何处理当位于第一页时,如何禁用上一页按钮的功能等问题
以下是code部分,有非常详细的注释,帮助你了解内部实现机制:
<apex:page standardController="Contact" recordSetVar="contacts">
<apex:form>
<apex:pageBlock title="Contact List" id="contacts_list">
Filter:
<apex:selectList value="{! filterId}" size="1">
<apex:selectOptions value="{! listViewOptions}" />
<apex:actionSupport event="onchange" reRender="contacts_list" />
<!-- reRender属性传入pageBlock tag的id -->
</apex:selectList>
<apex:pageBlockTable value="{! contacts}" var="ct">
<apex:column value="{! ct.FirstName}" />
<apex:column value="{! ct.LastName}" />
<apex:column value="{! ct.Email}" />
<apex:column value="{! ct.Account.Name}" />
</apex:pageBlockTable>
<!-- Pagination -->
<table style="width: 100%">
<tr>
<td>
<!-- Page X of Y -->
<!-- PageNumber:当前页面所在位置,ResultSize:记录总条数,PageSize:每页记录条数 -->
Page: <apex:outputText value="{! PageNumber} of {! CEILING(ResultSize / PageSize)}" />
</td>
<td align="center">
<!-- Previous Page -->
<!-- active -->
<apex:commandLink action="{! Previous}" value="« Previous" rendered="{! HasPrevious}" />
<!-- 如果没有上一页就用文本显示,不使用带action的链接 -->
<apex:outputText style="color:#ccc;" value="« Previous" rendered="{! NOT(HasPrevious)}" />
<!-- Next Page -->
<!-- active -->
<apex:commandLink action="{! Next}" value="Next »" rendered="{! HasNext}" />
<!-- 如果没有下一页就用文本显示,不使用带action的链接 -->
<apex:outputText style="color: #ccc;" value="Next »" rendered="{! NOT(HasNext)}" />
</td>
<td align="right">
<!-- Records per page -->
Records per page:
<apex:selectList value="{! PageSize}" size="1">
<!-- itemValue指每页显示多少条记录 -->
<apex:selectOption itemValue="5" itemLabel="5" />
<apex:selectOption itemValue="20" itemLabel="20" />
<apex:actionSupport event="onchange" reRender="contacts_list" />
</apex:selectList>
</td>
</tr>
</table>
</apex:pageBlock>
</apex:form>
</apex:page>
效果预览:
自定义分页控制器,实现自动设置每页展示记录条数参考资料:http://www.sfdcpoint.com/salesforce/pagination-using-standard-set-controller-salesforce/