在定义数据集时通过使用数据库本身的行序号或者使用数据库函数生成行序号(即行号)并且在where条件中通过页码参数使得行号在一定范围内显示,点击自定义的上一页下一页按钮时重新传入页码参数取出相应的数据
注:SQL Server2000无法生成行号,因此需要定义存储过程实现分页查询,以下具体介绍Access实现分页的步骤,SQL Server2005以及Oracle数据库实现分页的步骤有一点区别,以下会详细介绍。
SQL Server示例编辑;
方案一:使用ROW_NUMBER() OVER (ORDER BY 主键字段) AS rowno生成行号。
例一数据集ds1查询SQL语句,无带参数据集:
select * from (SELECT *,ROW_NUMBER() OVER (ORDER BY khdm) AS rowno FROM kehu) as b where b.rowno between 20*(${page}-1)+1 and 20*${page}
例二数据集ds2查询SQL带参
select * from
(SELECT *,ROW_NUMBER() OVER (ORDER BY khdm) AS rowno FROM kehu where shengfeng='${diqu}' )
as b where b.rowno between 5*(${page}-1)+1 and 5*${page}
1.新建模板
2.分页预览单独设置自定义上一页、下一页JS事件
上一页自定义JS
var page= $("tr[tridx=0]","div.content-container").children().eq(0).html();
if(page==0)//如果报表显示第一页,则上一页不可用
{
this.setEnable(false);
}
else
{
window.location.href="http://localhost:8075/WebReport/ReportServer?reportlet=dsjycsbb.cpt&page="+page;
}//herf跟的为模板分页预览URL地址;直接跟页码&page ; URL多参数写法:直接跟&diqu&page
//URL也可以直接 跟面板参http://localhost:8075/WebReport/ReportServer?reportlet=dsjycsbb.cpt&page="+page+"&diqu="+diqu;
下一页JS事件
var page= $("tr[tridx=0]","div.content-container").children().eq(1).html();
var total=$("tr[tridx=0]","div.content-container").children().eq(2).html();
if(parseInt(page) > parseInt(total))
{ this.setEnable(false); }
else
{
window.location.href="http://localhost:8075/WebReport/ReportServer?reportlet=dsjycsbb.cpt&page="+page;
}
//URL也可以直接 跟面板参http://localhost:8075/WebReport/ReportServer?reportlet=dsjycsbb.cpt&page="+page+"&diqu="+diqu;
3.para去掉点击查询前不显示报表内容