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 在试图打开文件时遇到错误.请尝试下列方法:* 检查 ...
随机推荐
- 利用LiveReload插件实现vscode和谷歌浏览器实时刷新
说明 最近在研究CSS希望可以提升一个层次.在写DEMO练习的时候老是需要去谷歌浏览器手动刷新页面才能看到更改后的效果次数多了 我也受不了,这不我又请来了个帮手: LiveReload,名如其人,这家 ...
- day04---系统重要文件
系统重要的文件 /etc的重要文件 1./etc/sysconfig/network-scripts/ifcfg-eth0 [root@localhost ~]# cat /etc/sysconfig ...
- select_for_update悲观锁
例子,银行存款和撤销方法 1.用户A提取帐户 - 余额为100 $. 2.用户B提取帐户 - 余额为100 $. 3.用户B退出30 $ - 余额更新为100 $ - 30 $ = 70 $. 4.用 ...
- ASP.NET Core 微信支付(一)【统一下单 APIV3】
官方参考资料 签名:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml 签名生成:https://wechatp ...
- 【Azure 批处理 】Azure Batch门户中创建自定义作业模式失败解决办法
问题描述 跟随官方文档,快速创建Azure批处理任务(快速入门:在 Azure 门户中运行第一个 Batch 作业),在添加作业时,选择"自定义模式",并添加文档中所提供的简单命令 ...
- 【Azure 应用服务】Azure App Service能否使用Storage Account File Share
问题描述 Azure App Service能否使用Storage Account File Share? 问题回答 如果部署的App Service为Linux环境,可以直接使用Mount stor ...
- Kubernetes:Pod 端口映射
本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...
- 【Flink入门修炼】2-1 Flink 四大基石
前一章我们对 Flink 进行了总体的介绍.对 Flink 是什么.能做什么.入门 demo.架构等进行了讲解. 本章我们将学习 Flink 重点概念.核心特性等. 本篇对 Flink 四大基石进行概 ...
- rt_snprintf()是什么
在c++中snprintf()函数的解释 1,函数原型: int snprintf(char* dest_str,size_t size,const char* format,...); 2,功能 将 ...
- set中的erase使用的一个错误
如果在遍历set的时候去erase很容易出事 事故代码: multiset<int>a; for(auto it=a.begin();it!=a.end();it++){ a.erase( ...