润乾集算报表交互分析之伸缩显示

来源:互联网 发布:windows pe 编辑:程序博客网 时间:2024/06/06 20:42

 报表交互分析中经常会使用伸缩(折叠)显示功能,使用润乾集算报表可以完成报表展现伸缩功能。集算报表内置了伸缩功能,但对报表格式有要求,下面来看一下使用过程。

  报表是要求带有合计行的分组交叉报表,如下图示效果:

report5_interactive_display_1

  完成类似的伸缩功能在集算报表中很简单,只需要两步,设计报表,加入tag属性。首先,报表模板制作如下:

report5_interactive_display_2

  其中,数据源使用自带的demo;数据集ds1为:SELECT 订单.货主地区,订单.货主城市,订单.运货费,订单.订单ID,订单明细.单价,订单明细.数量 FROM 订单,订单明细 where 订单.货主地区!=” and 订单.订单ID=订单明细.订单ID

  准备页面,使用安装包自带的showReport.jsp,并在report:html标签中加入isOlap=”yes”属性,如下:

  <report:html name=”report1″ reportFileName=”<%=report%>”

    funcBarLocation=”"

    needPageMark=”yes”

    generateParamForm=”no”

    params=”<%=param.toString()%>”

    isOlap=”yes”

  />

  启动应用,使用该页面访问报表即可实现开篇的效果。

  这里可以看到使用内置的伸缩功能非常简单快捷,但对报表样式有所限制。如果对其他格式报表也需要伸缩展现,可以通过编写JS脚本实现,集算报表提供了相关属性和接口供用户自定义JS使用。下面来看另外一种实现方式。

  以分组汇总报表为例,目标报表样式如下:

report5_interactive_display_3

  要求:点击地区前减号或加号完成相应地区内城市数据的折叠或展开。

  首先准备相应分组报表,模板如下:

report5_interactive_display_4

  设置A2的HTML事件:

report5_interactive_display_5

  HTML事件表达式为:”onClick=showHidden(\’”+row()+”\’,\’”+ds1.dcount(货主城市)+”\’)”,这里单击事件调用showHidden函数,并传递当前行号和当前分组成员数量。

  showHidden函数实现思路是根据点击行和分组成员数,依次获取该分组成员所在行,再设置其行显示属性为隐藏或显示。

  showHidden函数内容如下:

  function showHidden(row,groupNum){

    var rn = parseInt(row);    //当前行号

    var gn = parseInt(groupNum);         //分组成员数

    var flagObj = document.getElementById(“report1_A”+rn);   //+-号所在单元格

    for (var i=rn+1;i<=rn+gn;i++){

      var obj = document.getElementById(“report1_C”+i).parentNode;  /获取分组成员所在行TR

      var disp = obj.style.display;

      if(disp==null || disp==”"){//设置TR折叠

        obj.style.display=”none”;

        flagObj.innerHTML=”+”;

      }else{//设置TR展开

        obj.style.display=”";

        flagObj.innerHTML=”-”;

      }

    }

  }

  使用JSP发布报表,即可实现上述折叠报表效果。实际使用中,由于用户的报表不尽相同,实现上也略有差异。集算报表支持HTML事件并可以传递报表内容给自定义JS函数,实现非常灵活。

0 0
原创粉丝点击