-
tangmq 数据达人Lv4
发表于2019-7-17 17:32
楼主
报表有折叠式钻取,效果如下图,点击左边的加号,可以一层层的展开
那么需求来了:如果要对数据导出,而且导出的时候,希望导出全部展开后,进行导出。即,一键展开所有节点,然后导出展开后的数据;
实现步骤:
步骤一:添加一个文本,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=true')
步骤二:定义服务器计算前脚本,注意哈,不是客户端脚本,服务器端计算前脚本
复制代码
那么需求来了:如果要对数据导出,而且导出的时候,希望导出全部展开后,进行导出。即,一键展开所有节点,然后导出展开后的数据;
实现步骤:
步骤一:添加一个文本,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=true')
步骤二:定义服务器计算前脚本,注意哈,不是客户端脚本,服务器端计算前脚本
- //机构的维表元
- def jgCellName="A1";
- //机构维的级次
- def dimMaxLevel=2;
- //缩进距离
- def indent = 15;
- def jgRow = 0;
- def jgCol = 0;
- //设置浮动范围
- def setFloatRange(rc,left,top,right,bottom){
- rc.setTop(top);
- rc.setLeft(left);
- rc.setRight(right);
- rc.setBottom(bottom);
- }
- //展开所有级次
- def expandAll(jgCellName,dimMaxLevel,indent){
- jgCell = rpt.getCell(jgCellName);
- jgRow = jgCell.getRow();
- jgCol = jgCell.getCol();
-
- //注意此脚本只适合机构表元在第一个分析区的情况
- //浮动分析区的范围
- fxqRect = rpt.getFxq(0).getRange();
- //添加行数
- rpt.insertRow(jgRow+1,dimMaxLevel);
- if (fxqRect.getBottom()==jgRow+1){
- //需要调整分析范围
- fxqRect.setBottom(fxqRect.getBottom()+dimMaxLevel);
- }
- for(r in 0..<dimMaxLevel){
- row = r +jgRow+1;
- for(c in 0..<rpt.getColCount()){
- precl = rpt.getCell(jgRow,c);
- cl = rpt.getCell(row,c);
- cl.copyAll(precl);
- cl.adjustCellExp(true,true,jgRow-1,r+1);
- if (precl.isDimCell()){
- cl.copyToDimCell(precl);
- //设置浮动范围
- rc = precl.getFloatRange();
- setFloatRange(cl.getFloatRange(),rc.getLeft(),row,rc.getRight(),dimMaxLevel+jgRow+1);
- cl.setProperty('indent',indent*(r+1)+'');
- cl.setProperty('url','');
- cl.setFloatSumLevel(r+1);
-
- //把源行的浮动表元范围设置下
- if (r==0){
- precl.getFloatRange().setBottom(dimMaxLevel+jgRow+1);
- precl.setFloatSumLevel(0);
- precl.setProperty('url','');
- }
- }
- }
- }
- }
- if ("true".equals(params.getValue("@expand"))){
- expandAll(jgCellName,dimMaxLevel,indent);
- params.setValue("@expand","");
- }
3个回答
[BI33一键展开收回方法]第一步:
添加一个文本作为一键展开的功能,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=true')
如果需要一键收回,还需要在添加一个文本,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=false')
第二步:
添加服务器计算前脚本[attach]20924[/attach]
配置以上内容即可实现一键展开。
PS:BI47和ABI一键展开方法通用,可参考楼主提供的方法,如需一键展开和收回也可参考该贴:http://bbs.esensoft.com/thread-133882-1-1.html