本帖最后由 天问台 于 2022-6-12 22:53 编辑
课程内容
1. 脚本的基本介绍 2. 10个常用脚本案例的讲解
脚本执行顺序
报告上脚本的顺序大概如下: •执行“装载时运行”的脚本。 •执行“变化时运行”的脚本。 • 执行所有组件级脚本。 “装载时运行”仅在首次加载报告时执行一次。它可用于初始化变量和定义参数。报告有任何变化时,“变化时运行”都会重新执行。每当特定组件由于用户操作(在组件本身或相关组件上)而刷新时,组件上的脚本都会重新执行。因为所有组件上的脚本执行顺序是不确定的,所以应该避免从一个组件的脚本上设置另一个组件的属性。 报告打开时,脚本、参数、数据的整体顺序如下: •“装载时运行”的脚本,是最先执行的。此脚本定义在报告上。 •通过输入框输入的参数。 •所有组件的查询数据。 •“变化时运行”的脚本。 •组件上的脚本。 报告变化时: •变化时运行的脚本。 •组件上的脚本。
场景1:topN场景 如果只是单向topN的场景,用产品默认的绑定参数即可 如果需要通过topN能自由选择看到最高的TopN(正数)和最低的topN(负数),还是得用脚本的形式
// 大小写敏感 var ranks1 = param["RANK"]; var col = 产品名称销量_总和.binding.getXCol(0); if(ranks1>0){ col.sortType = 6; }else{ col.sortType = 5; } col.sortRank = Math.abs(parseInt(ranks1)); 产品名称销量_总和.binding.setXCol(0,col);
场景2-7 场景2-显示隐藏:可以通过参数选择的方式来设置组件/组合的可见性,从而大幅丰富报表内容 if(param['下拉参数1'] == '利润趋势图'){ 图表1.visible =true;//图表1可见 表1.visible =false; ;//表1不可见 } else{ 图表1.visible =false; 表1.visible =true; }
场景3-批量提交: // 新版本中可以直接选择提交按钮的类型成批量提交 // 老版本中需要设置提交按钮的组件脚本 step1:在报告设置中勾选『批量提交』 step2:在提交按钮的设置-脚本-提交时运行中,添加refreshData()
场景4-参数使用和传递 // 超链接中的传参过滤:确保主界面和子界面之间传递参数的时候的参数名称和类型一致 // URL中传参过滤:报告URL&参数名1=参数值&参数名2=参数值!a!参数值 // 报告中的参数传递给数据集中
场景5-自由式表格中的格间计算 // 参考格间计算的相关语法说明,能定位单元格的数据进行综合的计算
场景6-标签和提示信息中的更改,比方说 市场分布:{col["市场分布"]} 销售额:{col["销售额"],number,#,###0.0万元} 占比:{col['占比'],number,0.00%}
场景7-计算列的使用场景
场景8:参数/过滤的获取值和赋值
// 日期过滤的场景 // 获取日期过滤的值,并规范化成 yyyy-MM-dd的样式 if(日期过滤1.firstDates!=null) { var a = 日期过滤1.firstDates[0]; //日期过滤组件用脚本获取值会少一个月,所以需要dateAdd一个月回去 var b = formatDate(dateAdd(parseDate(substring(a,1,a.length()),'yyyy-MM-dd'),"month",1),'yyyy-MM-dd'); } debug(a); debug(b);
// 设置日期过滤的值 // 设置日期成2022-04-04的话,参考以下写法,月份减一 日期过滤1.firstDates=["t2022-03-04"];
// 参数类型的组件赋值和获取值 市场分布.setSelectedObjects(["东部市场", "南部市场"], STRING); debug(市场分布.getSelectedObjects()[0]) debug(市场分布.getSelectedObjects()[1])
// 在筛选器比较多的情况下,一般还会新增两个按钮,『提交』、『清空』 提交:即实现批量提交的功能 清空:将选择的条件进行清空,类似于以下写法 列表过滤1.setSelectedObjects(null) 列表参数1.setSelectedObjects([],STRING)
// 参数值的引用 // 文本/富文本中:?{参数名} // 计算列/脚本中:param["参数名"]
场景9-10
// 场景9:获取组件的值
var data=getViewData("表格1");// 从表格1中获取数据 var b=data.get(2,1); // 获取第3行,第2列的数据 ; 索引index从0开始计算,表格的标题占用一个空间 debug(b) // 返回422523
// 场景10-易错场景:除数为0 // 在计算列中往往会有除法的应用,当除数为0的时候,会报错;可以在计算列中添加判断来避免 if sum(col['销售额']) != 0 thensum(col['利润'])/sum(col['销售额']) else 0 end
// 更多场景可以参考帮助文档、论坛来进行学习
|