FineReport SQL查询分页

 参考: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);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值