参考:https://help.fanruan.com/finereport/doc-view-4795.html
参考示例为填报页面,以下为分页预览模式下SQL查询分页的制作。
参数说明:
模版参数:gPageSize=每页显示数量、gPageNo=当前页数
数据集结果:totalcnt=总数、totalpage=总页数
1、创建数据集:
1.1、主数据集
.......
-- 添加分页内容
${if(len(gPageNo)=0,"","limit "+((gPageNo-1)*gPageSize)+","+gPageSize)}
1.2、页码数据集pagetool
select
count(1) as totalcnt, -- 总数
ceiling(count(1)*1.0/${gPageSize}) as totalpage -- 总页数from table
2、明细列表内容制作
3、自定义工具栏
3.1、工具栏内容
打开模板>模板web属性>分页预览设置,选择为该模板单独设置,将默认的工具栏按钮全部清除掉,然后依次添加两个自定义按钮,一个邮件按钮,两个自定义按钮,一个Word格式,一个PDF按钮。如下所示:
注:使用具体格式按钮,如邮件、Word格式、PDF按钮是为了JS直接使用控件名称获取空间方便修改其内容;
3.2、工具栏按钮说明
- 第一个自定义按钮-首页,自定义其事件:
_g().getParameterContainer().getWidgetByName("gPageNo").setValue(1);
_g().parameterCommit();
- 第二个自定义按钮-上一页,自定义其事件:
var pageno = FR.remoteEvaluate("=$gPageNo");
_g().getParameterContainer().getWidgetByName("gPageNo").setValue(pageno - 1);
_g().parameterCommit();
- 第三个自定义按钮-下一页,自定义其事件:
var pageno = FR.remoteEvaluate("=$gPageNo");
_g().getParameterContainer().getWidgetByName("gPageNo").setValue(pageno*1 + 1);
_g().parameterCommit();
- 第四个自定义按钮-末页,自定义其事件:
var totalpage = FR.remoteEvaluate("=value('pagetool',2,1)");
_g().getParameterContainer().getWidgetByName("gPageNo").setValue(totalpage);
_g().parameterCommit();
3.3、工具栏事件
添加加载结束后事件,设置工具栏内容:
setTimeout(function() {
var bar = 1; // 工具栏位置:0=上方工具栏、1=下方工具栏
var totalcnt = FR.remoteEvaluate("=value('pagetool',1,1)");
var totalpage = FR.remoteEvaluate("=value('pagetool',2,1)");
// console.log(totalcnt + "-" + totalpage);
var pageno = FR.remoteEvaluate("=$gPageNo");
var pagesize = FR.remoteEvaluate("=$gPageSize");
// console.log(pageno + "-" + pagesize);
// 当前页
var currentpageStr = "<input id='currentpage' min='1' type='number' style='width:50px;margin-left:5px;'/><label id='totalpage' style='font:400 14px Arial;'></label>";
// 数据总量
var totalcntStr = "<label style='font:400 14px Arial;margin-left:5px;'> 数据总量:" + totalcnt + "</label>";
// 总页
var pagesizeStr = "<label style='font:400 14px Arial;margin-left:5px;'>每页显示条数:</label><input id='pagesize' min='10' max='100' type='number' style='width:50px'/><label style='padding-right:20px'></label>";
// 工具栏内容设置
$("#fr-btn-Email").replaceWith(currentpageStr); // 邮件
$("#fr-btn-Word").replaceWith(totalcntStr); // Word格式
$("#fr-btn-PDF").replaceWith(pagesizeStr); // PDF
$("#currentpage").val(pageno);
$("#currentpage").attr("max", totalpage);
$("#currentpage").attr("val", pageno);
$("#totalpage").text(" / " + totalpage);
$("#pagesize").val(pagesize);
// 切换页码
$("#currentpage").change(function() {
var val = $(this).val();
// alert(val);
if (val < 1 || val > totalpage) {
$(this).val(pageno);
} else {
// 查询
_g().getParameterContainer().getWidgetByName("gPageNo").setValue(val);
_g().parameterCommit();
}
});
// 切换每页个数
$("#pagesize").change(function() {
var val = $(this).val();
// alert(val);
if (val < 10 || val > 100) {
$(this).val(pagesize);
} else {
// 查询
_g().getParameterContainer().getWidgetByName("gPageSize").setValue(val);
_g().parameterCommit();
}
});
_g().getToolbar(1).setVisible(true);
}, 10);