1. 概述
1.1 版本
报表服务器版本 |
---|
10.0 |
1.2 应用场景
在报表应用中,我们经常会用到报表页面的刷新,比如报表中有数据更新时需要定时刷新,填报报表中填报成功后需要刷新,决策报表中某个报表块需要定时的刷新等等,都会用到刷新。下面对这些刷新方法进行总结。
1.3 实现思路
对于报表进行刷新的方式较多主要有以下几种:
手动刷新:手动点击浏览器刷新按钮,此方法适用于所有报表,但重新加载速度可能较慢,参数栏参数会初始化,需要重新填写。
使用 JS 接口,具有刷新功能的接口较多,将在第 2 节详细讲解。
决策报表可使用插件,详情请参见 决策报表内报表块刷新插件 。
2. 刷新接口总结
接口 | 含义 | 适用范围 | 缺点 |
---|---|---|---|
location.reload() | 刷新整个报表页面,和手动点击浏览器的刷新功能是一样的 | 所有报表应用 | 跟手动刷新一样,重新加载速度可能较慢,参数栏参数会初始化,需要重新填写,用户体验较差。 |
contentPane.parameterCommit() | 重新提交参数栏参数,报表块刷新,参数栏不会刷新 | 具有参数栏的所有报表中(包括使用了参数栏隐藏) | 报表必须设置参数栏。 |
contentPane.gotoPage(1)注:此方法可以使用三个参数 gotoPage(pn, para, noCache),跳转到指定页,重新提交参数,有无缓存,使用较灵活 | 跳转到报表第 1 页,不管报表此时是处于第 1 页,都会再加载一次,参数栏不会刷新 | 分页报表,填报报表 | 无 |
this.options.form.getWidgetByName("report0").gotoPage(1) | 获取决策报表中名为 report0 的报表块,跳转到第 1 页 | 决策报表 不支持移动端 | 无 |
contentPane.refreshAllSheets() | 刷新填报或分析报表中所有的sheet,不会刷新参数栏 | 填报报表,分析报表 | 如果有多个 sheet 填报,会刷新所有的 sheet,可能导致数据丢失 |
contentPane.reloadCurLGPPane() | 刷新填报或分析报表中当前 sheet,不会刷新参数栏,也不会影响其他 sheet 数据 | 填报报表,分析报表 不支持移动端 | 无 |
contentPane.loadContentPane() | 加载报表内容块,也会刷新页面,如果参数栏有参数,会提交参数栏参数 | 分页报表,填报报表,分析报表 不支持移动端 | 如果是在填报报表或分析报表中,会刷新所有的 sheet 数据 |
globalForm.loadContentPane() | 加载报表内容块,也会刷新页面 | 决策报表 不支持移动端 | 无 |
3. 示例索引
文档链接 | 应用场景 | 效果图 |
---|---|---|
JS实现当前页刷新 | 填报成功刷新 | |
数据校验刷新 | ||
点击按钮刷新 | ||
JS实现报表块数据变化后刷新联动的图表块 | 实现报表块数据发生变化后,联动的图表块也会自动刷新 | |
图表刷新接口 | 点击按钮可以刷新普通报表或决策报表中的图表 | |
扩展图表组件刷新 | 实现扩展图表组件的刷新 | |
自动查询 | 提交参数后重新查询,刷新报表 | |
JS实现定时刷新报表 | 实现报表以指定的频率刷新 | |
JS实现决策报表定时刷新 | 实现决策报表的定时刷新 | |
JS实现决策报表内报表块翻页 | 报表块实现局部刷新 | |
JS实现决策报表中网页框刷新 | 决策报表中使用了 A、B 两个网页框,两个网页框分别对应 A、B 报表,实现点击 A 报表中的按钮刷新 B 报表 | |
JS实现关闭子页面时刷新父页面 | 项目中做填报时,会遇到点击按钮跳转到子页面填写详细信息。当填报完成,关闭子页面时,希望能刷新父页面。 | |
JS实现子窗口填报后刷新父页面 | 子报表填报成功后,数据能马上在主报表中显示出来,通常采用的方法是刷新主报表。 |