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 在试图打开文件时遇到错误.请尝试下列方法:* 检查 ...
随机推荐
- lib,dll的位置
在添加第三方库的时候需要注意放置的路径,注意区分x86和x64的文件夹路径以及VS的版本,不要放错了 lib的位置:(需要先将lib放到该路径下,不然会说找不到.lib)C:\Program File ...
- pikachu sql inject delete 注入
留言板输入几条信息 出现删除按钮,点他 通过burpsuite拦截请求,请求报文如下 GET /vul/sqli/sqli_del.php?id=57 HTTP/1.1 Host: 192.168.1 ...
- Gin框架使用jwt-go配合中间件认证
参考文档 // 文档 https://github.com/golang-jwt/jwt https://pkg.go.dev/github.com/golang-jwt/jwt@v3.2.2+inc ...
- 【LeetCode动态规划#03】整数拆分(数学题)
整数拆分 力扣题目链接(opens new window) 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 ...
- 07、Etcd 中Raft算法简介
本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 思考: etcd是如何基于Raft来实现高可用.数据强-致性的? 1.什么是Raft算法 Raft 算法是现在分布式系统开发首选的共识算 ...
- 发现这个ip有bt下载,所以改路由,让其访问到一个不存在的ip上 route add
管理员权限cmd 发现这个ip有bt下载,所以改路由,让其访问到一个不存在的ip上 route add -p 195.154.181.225 mask 255.255.255.255 127.0.0. ...
- redis三主三从详细搭建过程
搭建Redis三主三从集群的详细步骤如下: 准备环境: 确保你有六台服务器或虚拟机,每台服务器上都已经安装了Redis.这些服务器将用于搭建三主三从的Redis集群. 确保所有服务器之间的网络连接正常 ...
- linux-debian-把用户加入root组
使用vim进入 /etc/sudoers 打开这个文件(或者 vi)也行 修改数据: 敲击键盘上个的 i 就可以键入字符了, 在root = ALL(ALL:ALL) ALL 的下面敲击 用户 ...
- @Autowired和@Resource整理
参考,欢迎点击原文:https://www.ixigua.com/6991282608663593508?id=6945836219422999079&logTag=944f6616c791c ...
- springboot增加slf4j
参考:https://blog.csdn.net/qq_27706119/article/details/104977666(主要) https://www.liaoxuefeng.com/wiki/ ...