1.上方是自由表头(Freeform)的分页器, 该分页器和报表的 ds1 数据源绑定;
2.此处的分页器和树列表(Treelist)用到的分页器是同一个东西,原理相近,您也可以参考树列表的分页显示的例子;

3.中心数据源的报表也可以使用分页,可打开另一个使用了中心数据源报表:




1.分页器的 XML描述文件

2.源码如下:
var count=0;
function OnReady(id)
{
 count++;
 if(count != 2) return;
 
 //2个控件都打开各自的模板
 AFPager.func("Build", "treelist/pager3.xml");
 AF.func("Build", "report/xmlsheet11.xml");
 //取得 ds1 数据源的句柄
 var h = AF.func("GetHandle", "ds1");
 //绑定, 一旦绑定将触发一个“Pager”分页事件
 AFPager.func("BindPager", h + "\r\n ID0 \r\n currentPage=0");
}
 
//事件入口
function OnEvent(id, Event, p1, p2, p3, p4)
{
 if(id=='AFPager' && Event == 'Pager') {
  //响应分页事件:仅需要执行计算
  AF.func("calc", "");
 }
}

3.数据源的URL书写规则:
3.1. 可选规则一: URL中包含 "@rows" 和 "@startrow" (或 "@Page") 的宏。请打开该报表 ds1 数据源设置,可以看到其URL如下:

该数据源在取数时,分页器会将这3个宏替换成真正的数字的,这3个宏的含义为:每页行数、从第几行开始、页序;

3.2. 可选规则二: URL中包含名为 "rows" 和 "startrow" (或 "Page") 的属性,比如:
http://www.supcan.cn/DotNet/access.aspx?rows=12&startRow=12
当数据源取数时,分页器能将 rows 和 startRow、page 参数的值替换成真正的值,例如:
http://www.supcan.cn/DotNet/access.aspx?rows=20&startRow=0

3.3. 可选规则三: URL中不包含上述分页参数或宏,比如:
http://www.supcan.cn/DotNet/access.aspx
当数据源取数时,分页器会去修改这个URL,追加 rows、startRow 和 page 参数,例如:
http://www.supcan.cn/DotNet/access.aspx?rows=20&startRow=0&page=0

4.数据源返回的数据的格式:
XML或JSON数据中,须包含名为 "totalRows" 的属性,即总行数,用于分页器的初始构造,写法请对照本例的真实XML数据: http://www.supcan.cn/DotNet/access.aspx?startRow=0&rows=5
也可以采用其它的写法,文档请参见树列表的文档: 6.分页/6.2 总行数.