【表单JS实例】JS实现决策报表内报表块局部刷新/翻页

楼主
我是社区第485122位番薯,欢迎点我头像关注我哦~
1. 概述
1.1 问题描述

有的时候我们不想刷新整个决策报表 决策报表定时刷新 JS,而只想刷新报表里的报表块。

报表里的报表块如何实现局部刷新?报表里的报表块又如何实现跳转到指定页?

如下图所示:

1)点击button0 按钮,报表块跳转到第 2 页,并且报表中通过公式 $month、$name正常获取到了参数值

2)点击button1 按钮,报表块每秒刷新一次


1.2 解决思路

通过 JS 来实现局部刷新和跳转到指定页。

this.options.form.getWidgetByName("repotname").gotoPage(pn, para, noCache)
参数  类型   说明
  pn  Number  页序号,序号 从1 开始
  para  JSON  选填,跳转报表块页面时携带的参数
  noCache  Boolean  选填,true时跳转报表块不使用缓存,强制取新的数据

例如:

this.options.form.getWidgetByName("report0").gotoPage(2,"{month:12, name:'FR'}",true);

可以通过这段 JS 实现。其中report0就是报表块的名称,这里指跳转到第 2 页,并传递参数 $month 的值为12,$name 的值为FR,并且不使用缓存。

2. 示例
2.1 模板设计

新建决策报表,拖入两个按钮 button0、button1,拖入两个报表块 report0、report1。

2.1.1 report0 设计

1)报表块report0 设计如下:

2)选择 B5、B10、B15 单元格,点击单元格属性>其他,设置行后分页,如下图所示:

2.1.2 report1 设计

编辑报表块 report1 ,对A1单元格添加公式=now(),如下图所示:


2.2 报表块翻页

选中 button0 按钮,点击控件设置>事件,添加点击事件,如下图所示:

JS 代码如下:

  1. this.options.form.getWidgetByName("report0").gotoPage(2, "{month:12, name:'FR'}", true); //报表块翻页并传递month、name两个参数
复制代码

保存模板,点击 button0 按钮后,report0 报表块跳转到第 2 页,并且报表中通过公式获取参数 $month,$name 可以正常获取到参数值。

2.3 报表块局部刷新

选中 button1 按钮,点击控件设置>事件,添加点击事件,如下图所示:

JS 代码如下:

  1. var form = this.options.form;
  2. setInterval(function() {
  3.      form.getWidgetByName('report1').gotoPage(1,"{}",true);
  4. }, 1000); //刷新报表块report1
复制代码

保存模板,点击 button1 按钮后,report1 报表块一秒刷新一次

注:此方案移动端同样适用,移动端如何添加模板请查看添加服务器报表查看

2.4 效果预览
2.4.1 PC 端


2.4.2 移动端

分页页码显示,需点击右上角组件放大图标,放大组件后,在底部可见。

3. 模板下载

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\18-JS实现决策报表内报表块局部刷新或翻页.frm

模板见附件



编辑于 2020-12-18 16:59  
编辑于 2020-12-18 17:00  
分享扩散:

沙发
发表于 2021-1-27 10:58:03
板凳
发表于 2021-12-22 13:38:33
lazy怎么用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表