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

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

1.分页器的 XML描述文件： 2.源码如下：
    function OnReady(id)
    {
     //Freeform容器
     AF.func("Build", "report30.xml");
     //2个控件都打开各自的模板
     AF.func("id_pager.Build", "treelist/pager3.xml");
     AF.func("id_report.Build", "report/xmlsheet11.xml");
     //取得 ds1 数据源的句柄
     var h = AF.func("id_report.GetHandle", "ds1");
     //绑定, 一旦绑定将触发一个“Pager”分页事件
     AF.func("id_pager.BindPager", h + "\r\n ID0");
    }

    //事件入口
    function OnEvent(id, Event, p1, p2, p3, p4)
    {
     if(Event == 'id_pager.Pager') {
      //响应分页事件：仅需要执行计算
      AF.func("id_report.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 总行数.