折叠式一键展开方法

2665
2

土豆我是马铃薯 数据达人Lv4

发表于2019-10-25 17:47

楼主
功能:通过点击文本或者按钮,实现一键张开某个表所有层级,再次点击收回展开
1
添加一个文本组件,添加钻取方式为万能式,脚本如下(固定写法):
javascript:
var value=g_rptpage.calcParam.calcparams.getValue("@expand","false");
console.log(value);
if(value=="true"){
        g_rptpage.calcParam.calcparams.setValue('@expand',"false");
}else{
        g_rptpage.calcParam.calcparams.setValue('@expand',"true");
}
_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false')
2
然后添加一个计算前脚本:
//机构的维表元
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);
}
截图201910251747458042.png

最近看过此主题的会员

hesj

Shirley

2个回答

只看楼主

辰哥 管理员

发表于2019-12-5 14:37

只看该作者

取消 关注该作者的回复

沙发

棒!

Shirley 小试身手Lv3

发表于2024-3-15 18:06

只看该作者

取消 关注该作者的回复

板凳

需要在页面中添加一个输入框参数,参数名为@expand,默认值是true

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号