JS实现打开报表时默认为最后一次查询参数
问题描述
普通报表在打开时希望参数面板中的参数控件的值可以默认是上一次页面关闭前最后一次查询所选择的值。

解决方案
- 每次在页面关闭时将参数值保存到浏览器缓存中(适用用非FS平台),或每次点击查询后将参数条值保存到浏览器缓存中(适用FS决策平台)。
- 报表打开时从浏览器缓存中将参数值读取出来并赋值给对应的控件。
注1:不支持决策报表和移动端报表。
注2:该方案仅支持同一台电脑下读取缓存,不同电脑缓存的结果也不一致。
示例一:通用版
- 打开需要配置的模板,点击右上角「组件设置」中「para」组件。
- 点击「添加事件」添加一个「初始化」后事件。
- 在事件编辑框中添加参数,并写入对应的JavaScript脚本。

其中,参数名为fr_name,参数值为公式reportName。
JavaScript 代码如下:
// 监测到浏览器页面关闭时将参数栏所有控件当前所选的值保存到localStorage中,将fr_name参数encodeURL后转为Base64编码作为缓存的key值
window.onbeforeunload = function() {
localStorage.setItem(btoa(encodeURI(fr_name)), _g().getParameterContainer().getSelectValue());
};
// 页面初始化后,根据key值读取缓存值,若存在则将对应的值赋值给对应的控件
setTimeout(function() {
var storage = localStorage.getItem(btoa(encodeURI(fr_name)));
if (storage) {
var storageJson = JSON.parse(storage);
for (var key in storageJson) {
_g().getParameterContainer().getWidgetByName(key).setValue(storageJson[key]);
}
};
}, 10);
示例二:指定参数版
- 打开需要配置的模板,点击右上角「组件设置」中「para」组件。
- 点击「添加事件」添加一个「初始化后」事件。
- 在事件编辑框中添加参数,并写入对应的JavaScript脚本。
注:若仅指定部分参数读取缓存值或控件之间存在关联关系,推荐使用第二种方案

其中,参数名为fr_name,参数值为公式reportName。
JavaScript 代码如下:
// 监测到浏览器页面关闭时将参数栏所有控件当前所选的值保存到localStorage中,将fr_name参数encodeURL后转为Base64编码作为缓存的key值
window.onbeforeunload = function() {
localStorage.setItem(btoa(encodeURI(fr_name)), _g().getParameterContainer().getSelectValue());
};
// 页面初始化后,根据key值读取缓存值,再根据指定的控件顺序进行赋值
setTimeout(function() {
var storage = localStorage.getItem(btoa(encodeURI(fr_name)));
if (storage) {
var storageJson = JSON.parse(storage);
var widgetsKeys = ["AREA","PROVINCE","CITY"]; // 指定需要默认赋值的参数及参数顺序
widgetsKeys.forEach(key=>{_g().getParameterContainer().getWidgetByName(key).setValue(storageJson[key]);})
};
}, 10);
示例三:FS决策平台版
目前开放的API中并未包含决策平台页签关闭事件,所以无法监测到报表在决策平台中关闭的事件。因此,如果希望实现同样的效果,则需要在每次点击查询按钮时就将当前的控件参数值全部缓存到浏览器中。
具体操作除示例一与示例二中的内容外,需补充以下步骤:
- 选中「查询」按钮。
- 点击「添加事件」,并添加一个「点击」事件。
- 在事件编辑框中添加参数,并写入对应的JavaScript脚本。

其中,参数名为fr_name,参数值为公式reportName。
JavaScript 代码如下:
// 将fr_name参数encodeURL后转为Base64编码作为缓存的key值,参数栏所有控件当前所选的值作为value值
localStorage.setItem(btoa(encodeURI(fr_name)),_g().getParameterContainer().getSelectValue());
模板下载
1)示例一:
点击下载模板:JS实现模板打开默认带出上一次查询的参数条件(通用版).cpt
2)示例二:
点击下载模板:JS实现模板打开默认带出上一次查询的参数条件(指定控件及顺序版).cpt
3)示例三:
点击下载模板:JS实现模板打开默认带出上一次查询的参数条件(决策平台版).cpt
JS实现打开报表时默认为最后一次查询参数的更多相关文章
- 用js代码打开新场口 关于window.open()方法的参数
应用window.open,可以弹出新窗口, window.open('path', 'windowName', 'windowSetting' ) window.open("./a.htm ...
- FeignClient调用POST请求时查询参数被丢失的情况分析与处理
前言 本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点,在这里本人就不重复了,只是专注在这个问题点上. 查询参数丢失场景 业务描述: 业务 ...
- 【SAP BO】处理掉BOE打开Xcelsius报表时,外围出现的外边框(转)
原帖地址:http://blog.csdn.net/liyi199488/article/details/8943286 通过BOE打开Xcelsius报表时,总是出现一个外边框. 处理办法: Xce ...
- JS调用水晶报表打印翻页按钮事件
默认的水晶报表打印按钮.翻页按钮太小,并且样式不好调整,考虑自己做一个按钮,然后调用水晶报表的按钮事件. 在实际操作中发现可以在.net按钮的服务器端事件中调用翻页方法: CrystalReportV ...
- js生成pdf报表
由于前台html已经动态生成报表,而且,前台有一个功能,一个date range组件,当你拖动的时候,报表会在不提交到后台的情况下动态变化.因此需要用到js生成生报表: 用到的组件: jquery.j ...
- 打开mysql时,提示 1040,Too many connections
打开mysql时,提示 1040,Too many connections,这样就无法打开数据库,看不了表里边的内容了. 出现这个问题的原因是,同时对数据库的连接数过大,mysql默认的最大连接数是1 ...
- Win7下打开计算机管理时出现错误的解决办法
计算机管理是用户在使用计算机时经常用到的一个选项,可以在桌面上右击计算机,选择"管理"打开.也可以在运行框中输入:compmgmt.msc打开计算机管理程序,里面有常用系统工具如用 ...
- Reporting Service报表项默认可见+号和-号的显示问题
在Reporting Service里面可以设置报表项(组.tablix行.tablix列.文本框等所有SSRS报表项)的可见性,并且可以设置某个报表项的可见性由点击另外一个报表项来控制,比如报表项A ...
- 如何在滚动报表时保持标题可见 (Reporting Services)
From: https://msdn.microsoft.com/zh-cn/library/bb934257.aspx 对于跨多页的表或矩阵数据区域,可以控制滚动报表时是否始终显示包含列标题的初始行 ...
- word2007在试图打开文件时遇到错误解决方法
当您尝试在 Microsoft Office Word 2007 中打开 .docx 文件时,该文件打不开.此外,您还会收到以下错误消息: Word 在试图打开文件时遇到错误.请尝试下列方法:* 检查 ...
随机推荐
- el-dialog关闭后重置表单和校验提示
问题说明 最近测试反馈操作某新增/修改表单,点击[取消]或[关闭]窗口后再次点击[新增]或[修改]发现校验提示仍然存在! 问题原因 项目采用Vue+ElementUI,修改表单的窗口控件采用el-di ...
- 我的小程序之旅六:微信公众号授权登录(适用于H5小程序)
实现步骤 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需sco ...
- 如何避免Git合并远程分支时出现可读性差的日志
问题及现象 当某一分支(假设为main)的本地仓库和远程仓库都基于同一个提交进行了修改,并分别创建了新的提交时,在本地执行git push origin main会提示先要执行git pull合并远程 ...
- javascript浮点数相减、相乘出现一长串小数
149.7 * 100 = 14969.999999999998 3.57 - 2.33 = 1.2399999999999998 这是JavaScript浮点运算采用IEEE 754标准导致的Bug ...
- 用CFF Explorer隐藏文件格式
1.首先我们加载两个PNG文件,可以看到 文件格式头部是一样的,我们如何将一个PDF文件格式改成PNG,修改之后的文件虽然含有图片的文件头格式,但是并不能打开. 将PNG的文件头复制写入到PDF文件头 ...
- 仅需10秒!ChatGPT轻松画出UML用例图,我却苦战10分钟。
当我们写技术文档时,一张系统用例图,平时要花费10分钟才完成,而ChatGPT绘图过程只用了10秒钟,基本可以达到同样的水平,通过ChatGPT可以显著提高画流程图的效率. 什么是用例图 用例图是统一 ...
- springboot多数据源配置理解
今天研究项目的多数据源配置,产生了一点疑惑,有很多地方没有指定数据源,那么spring如何知道连接哪一个呢?让我们从头开始梳理吧. 首先是数据源配类 其中使用到了两个数据源,项目采用读写分离,一个主库 ...
- yarn install --offline 离线安装 回头试试 npm install ./package.tgz
yarn install --offline npm pack npm install ./package.tgz 尝试了 npm-pack-all --dev-deps 也不行,太慢,等了20分钟 ...
- Multi-Runtime多运行时架构
概念 Multi-Runtime Multi-Runtime 是一种服务端架构思路,把应用里的所有中间件挪到 Sidecar 里,使得"业务运行时"和"技术运行时&quo ...
- 玩转Vue3之深入理解响应式编程
前言 Vue 3是一个功能强大的前端框架,它引入了一些令人兴奋的新特性,其中最引人注目的是ref和reactive.这两个API是Vue 3中响应式编程的核心,本文将深入探讨它们的用法和差异. 什么是 ...