自动刷新本表

7451
6

瑞艾 数据达人Lv4

发表于2018-6-5 09:14

悬赏1

已解决

楼主
本帖最后由 瑞艾 于 2018-6-5 09:16 编辑

自动刷新本表

最近看过此主题的会员

cuihr

yangqh

esen_4Q6MZ9SWVR

DJY

leiz

ArneEleven

esen_4RKHEF6NCS

txl

最佳答案
本帖最后由 洋洋 于 2018-6-7 10:44 编辑

功能:通过点击文本或者按钮,实现一键张开某个表所有层级,再次点击收回展开

1、
添加一个文本组件,添加钻取方式为万能式,脚本如下(固定写法):
javascript:
varvalue=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、
然后添加一个计算前脚本:
//机构的维表元
defjgCellName="A1";
//机构维的级次
defdimMaxLevel=2;
//缩进距离
def indent = 15;

def jgRow =0;
def jgCol =0;
//设置浮动范围
defsetFloatRange(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 in0..<dimMaxLevel){
row = r+jgRow+1;
for(c in0..<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);
}
6个回答

只看楼主

洋洋 小试身手Lv3

发表于2018-6-5 09:14

只看该作者

取消 关注该作者的回复

沙发

本帖最后由 洋洋 于 2018-6-7 10:44 编辑

功能:通过点击文本或者按钮,实现一键张开某个表所有层级,再次点击收回展开

1、
添加一个文本组件,添加钻取方式为万能式,脚本如下(固定写法):
javascript:
varvalue=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、
然后添加一个计算前脚本:
//机构的维表元
defjgCellName="A1";
//机构维的级次
defdimMaxLevel=2;
//缩进距离
def indent = 15;

def jgRow =0;
def jgCol =0;
//设置浮动范围
defsetFloatRange(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 in0..<dimMaxLevel){
row = r+jgRow+1;
for(c in0..<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);
}

lzg19861022 初学数据Lv2

发表于2018-6-7 00:00

只看该作者

取消 关注该作者的回复

板凳

在哪一块添加这段脚本

卖火车的小火柴 亿信华辰高级工程师

发表于2018-6-7 09:28

只看该作者

取消 关注该作者的回复

地板

lzg19861022 发表于 2018-6-7 00:00
在哪一块添加这段脚本

脚本添加的位置参见图片,在报表属性的高级里面,有个脚本属性。

洋洋 小试身手Lv3

发表于2018-6-7 10:43

只看该作者

取消 关注该作者的回复

5#

补充


瑞艾 数据达人Lv4

发表于2018-6-7 18:03

只看该作者

取消 关注该作者的回复

6#

洋洋 发表于 2018-6-5 09:17
功能:通过点击文本或者按钮,实现一键张开某个表所有层级,再次点击收回展开
1、添加一个文本组件,添加钻 ...

谢谢解答

卖火车的小火柴 亿信华辰高级工程师

发表于2018-6-8 15:08

只看该作者

取消 关注该作者的回复

7#

洋洋 发表于 2018-6-5 09:17
功能:通过点击文本或者按钮,实现一键张开某个表所有层级,再次点击收回展开
1、添加一个文本组件,添加钻 ...

你的这个脚本不是自动刷新的脚本,你这个是钻取展开的脚本,同学注意审题哦⊙∀⊙!

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

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

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

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

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