JS实现工具栏添加计数

编辑
  • 文档创建者:Poseidon
  • 浏览次数:5089次
  • 编辑次数:10次
  • 最近更新:Kevin-s 于 2019-06-23
  • 1. 描述

    场景描述:在报表查看过程中,有时候需要有计算当前行数的功能,我们可以在工具栏上显示当前条数。

    分页预览工具栏中有上一页,下一页,导出之类的功能,唯独没有计数功能,此处通过添加一个自定义按钮来实现该功能。

    效果如下:



    2. 思路

    通过单元格公式获取当前页的数据条数和报表总数据条数,并隐藏单元格所在行,利用工具栏的“加载结束”事件,获取隐藏的单元格的内容,显示在工具栏自定义的按钮文本上。


    3. 操作步骤

    3.1 修改模板

    1)打开%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\LineForm\LineForm.cpt

    2)编辑 ds1 数据集,将 SQL 修改为:SELECT * FROM 产品  order by 产品ID

    3)选中所有单元格,右键选中的单元格,清除控件:


    4)删掉 A 列,并调整报表页面宽度,如下图:


    5)选中  A3 单元格,在右侧属性面板选中条件属性,添加一个条件属性,属性选择分页:行后分页,类型选中公式,输入公式:&A3 % 10 = 0,点击增加

    6)在 A1 单元格插入公式:COUNT({A3}),计算当前页数据行数:


    7)同理,在 B1 单元格插入公式:COUNT(A3),计算报表数据总行数:

    注:A1、B1 单元格的两个公式不一样,A1 单元格多了一对中括号,{A3}的含义是获取当前页的 A3 单元格的值。

    8)右击第 1、2 行,设置重复标题行:


    9)右击第 1 行,点击隐藏



    3.2 分页预览设置

    1)选择模板>模板 Web 属性>分页预览设置,双击自定义按钮,添加至工具栏:


    2)添加加载结束事件,如下图:


    JS 代码如下:
    var curnum = $("td[id^='A1']").html(); //获取A1单元格的值,即当前页数据条数
    var rownum = $("td[id^='B1']").html(); //获取B1单元格的值,即报表总数据条数
    $('#fr-btn-CustomToolBarButton').text("当前页" + curnum + "条数据,共" + rownum + "条数据");

    3)如使用填报分页,需要在填报预览设置中添加自定义按钮,并添加加载结束事件:


    JS 代码如下:

    var curnum = $(".sheet-container").eq($(".fr-sheetbutton-container").index($(".fr-sheetbutton-container-active"))).find("td[id^='A']").length - 2; //获取当前sheetA列单元格个数,并减去前两行,即A3单元格扩展后的个数
    var rownum = $(".sheet-container").eq($(".fr-sheetbutton-container").index($(".fr-sheetbutton-container-active"))).find("td[id^='B1']").html(); //获取当前sheetB1单元格的值
    $('#fr-btn-CustomToolBarButton').text("当前页" + curnum + "条数据,共" + rownum + "条数据");


    4. 预览效果

    4.1 PC 端预览效果

    1)分页预览效果


    2)填报预览需在 URL 后面加上&__cutpage__=v



    4.2 移动端预览效果

    注:经过测试,移动端不支持该效果。


    5. 已完成模板

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\工具栏JS实例\01-JS实现工具栏添加计数.cpt

    点击下载模板


    附件列表


    主题: 二次开发
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]