反馈已提交

网络繁忙

JS实现普通报表缓存上一次浏览器查询参数

  • 文档创建者:weibw
  • 历史版本:5
  • 最近更新:wangshuail 于 2023-10-13
  • 1. 概述

    1.1 版本

    报表服务器版本
    11.0

    1.2 问题描述

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

    QQ录屏20221105222451.gif

    1.3 解决方案

    1)每次在页面关闭时将参数值保存到浏览器缓存中(适用于非FS平台),或每次点击查询后将参数值保存到浏览器缓存中(适用FS决策平台)。

    2)报表打开时从浏览器缓存中将参数值读取出来并赋值给对应的控件。

    注1:不支持决策报表和移动端报表。 

    注2:该方案仅支持同一台电脑下读取缓存,不同电脑缓存的结果也不一致。

    2. 示例一:读取全部参数

    1. 打开需要配置的模板,点击右上角「组件设置」中「para」组件。

    2. 点击「添加事件」添加一个「初始化」事件。

    3. 在事件编辑框中添加参数,并写入对应的JavaScript脚本。

    2022-11-06_00-25-09.png

    其中,参数名为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);

    3. 示例二:读取指定参数

    1. 打开需要配置的模板,点击右上角「组件设置」中「para」组件。

    2. 点击「添加事件」添加一个「初始化后」事件。

    3. 在事件编辑框中添加参数,并写入对应的JavaScript脚本。

    注:若仅指定部分参数读取缓存值或控件之间存在关联关系,推荐使用第二种方案

    2022-11-05_23-24-46.png


    其中,参数名为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);

    4. 示例三:数据决策系统读取参数

    目前开放的API中并未包含决策平台页签关闭事件,所以无法监测到报表在决策平台中关闭的事件。因此,如果希望实现同样的效果,则需要在每次点击查询按钮时就将当前的控件参数值全部缓存到浏览器中。

    具体操作除示例一与示例二中的内容外,需补充以下步骤:

    1. 选中「查询」按钮。

    2. 点击「添加事件」,并添加一个「点击」事件。

    3. 在事件编辑框中添加参数,并写入对应的JavaScript脚本。

    2022-11-06_00-08-28.png

    其中,参数名为fr_name,参数值为公式reportName

    JavaScript 代码如下:

    // 将fr_name参数encodeURL后转为Base64编码作为缓存的key值,参数栏所有控件当前所选的值作为value值
    localStorage.setItem(btoa(encodeURI(fr_name)),_g().getParameterContainer().getSelectValue());

    5. 模板下载

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持