商业报表工具-FineReport JS 实现动态隐藏参数以及控制参数面板高度

news2024/11/19 13:43:28

1. 概述

 1.1 版本

报表服务器版本

功能变更

11.0

--

1.2 预期效果

开发报表的时,经常会遇到使用的参数控件较多的情况,这时候可以对一些不常用、不需要展现出来的的控件进行隐藏,当需要展示的时候再使其展示出来,如下图所示:

注:报表冻结时,此方案在「分页预览」自适应效果不好,建议用户使用其他预览方式。

1.3 实现思路

为「按钮控件」添加点击事件,当点击按钮时,隐藏或显示指定的其他类型控件。

2. 示例

 2.1 添加控件

新建模板,在「参数面板」上添加多个控件,如下图所示:

2.2 修改控件名称

1)修改参数面板中 button1 、 button3 「按钮控件」的按钮名称为分别为「查看所有参数」和「隐藏所有参数」。如下图所示:

2)为后面添加的 JS 代码简洁,分别修改参数面板上最后一行的控件的「控件名称」a,b,c,d,e,f。如下图所示:

注:这里也可以不做修改,在后面添加的 JS 代码中对应控件名称即可。

2.3 添加点击事件

1)为「查看所有参数」按钮添加点击事件。选中该按钮,在右侧「控件设置>事件」中,添加「点击」事件,如下图所示:

JavaScript 代码如下所示:

var a = this.options.form.getWidgetByName("a");

var b = this.options.form.getWidgetByName("b");

var c = this.options.form.getWidgetByName("c");

var d = this.options.form.getWidgetByName("d");

var e = this.options.form.getWidgetByName("e");

var f = this.options.form.getWidgetByName("f");

a.setVisible(true);

b.setVisible(true);

c.setVisible(true);

d.setVisible(true);

e.setVisible(true);

f.setVisible(true);

if (!window.originalParameterContainerHeightBackup) {

window.originalParameterContainerHeightBackup = FR.parameterContainerHeight;

       window.originalContentContainerHeightBackup = $('#content-container').height();

       FR.tempParameterContainerHeight = 105;

window.tempContentContainerHeightBackup = window.originalContentContainerHeightBackup + window.originalParameterContainerHeightBackup - FR.tempParameterContainerHeight;

}

setTimeout(function() {

       $('.parameter-container').css('height', window.originalParameterContainerHeightBackup);

       $('#content-container').css('top', window.originalParameterContainerHeightBackup);

       $('#content-container').css('height', window.originalContentContainerHeightBackup);

FR.parameterContainerHeight = window.originalParameterContainerHeightBackup;

       if (contentPane) {

              var $frozen;

              var $tempContentPane;

              if (contentPane.$contentPane) {

                     $tempContentPane = contentPane.$contentPane;

              }

         if (contentPane.curLGP && contentPane.curLGP.$sheet_container) {

                     $tempContentPane = contentPane.curLGP.$sheet_container;

              }

              if ($tempContentPane) {

                     $frozen = $(".frozen-table", $tempContentPane);

              }

              if ($frozen && $frozen.length > 0) {

              FR.layoutFrozen($tempContentPane, $tempContentPane.offset().top);

              }

       }

}, 1000);

显示代码

2)为「隐藏所有参数」按钮添加点击事件。选中该按钮,在右侧「控件设置>事件」中,添加「点击」事件,如下图所示:

JavaScript 代码如下所示:

var a = this.options.form.getWidgetByName("a");

var b = this.options.form.getWidgetByName("b");

var c = this.options.form.getWidgetByName("c");

var d = this.options.form.getWidgetByName("d");

var e = this.options.form.getWidgetByName("e");

var f = this.options.form.getWidgetByName("f");

a.setVisible(false);

b.setVisible(false);

c.setVisible(false);

d.setVisible(false);

e.setVisible(false);

f.setVisible(false);

if (!window.originalParameterContainerHeightBackup) {

window.originalParameterContainerHeightBackup = FR.parameterContainerHeight;

       window.originalContentContainerHeightBackup = $('#content-container').height();

       FR.tempParameterContainerHeight = 105;

window.tempContentContainerHeightBackup = window.originalContentContainerHeightBackup + window.originalParameterContainerHeightBackup - FR.tempParameterContainerHeight;

}

setTimeout(function() {

       $('.parameter-container').css('height', FR.tempParameterContainerHeight);

  FR.parameterContainerHeight = FR.tempParameterContainerHeight;

       $('#content-container').css('top', FR.tempParameterContainerHeight);

       $('#content-container').css('height', window.tempContentContainerHeightBackup);

       if (contentPane) {

              var $frozen;

              var $tempContentPane;

              if (contentPane.$contentPane) {

                     $tempContentPane = contentPane.$contentPane;

              }

         if (contentPane.curLGP && contentPane.curLGP.$sheet_container) {

                     $tempContentPane = contentPane.curLGP.$sheet_container;

              }

              if ($tempContentPane) {

                     $frozen = $(".frozen-table", $tempContentPane);

              }

              if ($frozen && $frozen.length > 0) {

              FR.layoutFrozen($tempContentPane, $tempContentPane.offset().top);

              }

       }

}, 1000);

显示代码

2.4 预览效果

保存模板,点击「分页预览」,PC 端效果如下所示:

注:不支持移动端。

总结

使用帆软FineReport时,经常会遇到使用 帆软报表软件 参数控件较多的情况,这时候可以对一些不常用、不需要展现出来的的控件进行隐藏,全链路数据建设当需要展示的时候再使其展示出来,报表冻结时,此方案在「分页预览」自适应效果不好,建议用户使用其他预览方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/106840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字化信道

数字化信道 数字化信道主要包括多相滤波和DFT两个模块。 多相滤波 多相滤波,就是将滤波器系数按照相数进行重排。在D倍抽取后,整个频带的频谱将混叠在0频附近[−Fs2D,Fs2D)[-\frac{F_s}{2D} ,\frac{F_s}{2D})[−2DFs​​,2DFs​​)。因此,…

超标量处理器设计——第四章_分支预测

超标量处理器设计——第四章_分支预测 参考《超标量处理器》姚永斌著 4.1 简述 分支预测主要与预测两个内容, 一个是分支方向, 还有一个是跳转的目标地址首先需要识别出取出的指令是否是分支指令, 如果是需要送入方向和地址预测模块: 分支预测最好的时机就是当前周期取到指令地…

【C++】拷贝构造函数

目录 默认拷贝构造函数 拷贝构造函数的原型: 为什么不用值传递? 为什么不用指针传递? 调用拷贝构造函数的3种情况 (旧对象去构造新对象) 我们熟悉的类型有以下操作: 1.声明:int a; 2.声明并初始化:in…

圣诞节怎么能缺少圣诞树呢?Python+HTML打造专属于你的圣诞树

前言: 美酒一杯让人醉,温馨陪伴浪漫随;雪花片片惹人爱,烦恼忧伤全不见;字里行间藏真情,文短情深送心愿:圣诞佳节快来到,祝大家永远开心幸福! Hello大家好,我是Dream。 圣诞节马上到了,一些朋友问…

非零基础自学Golang 第14章 反射 14.2 基本用法 14.2.1 获取类型信息

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.2 基本用法14.2.1 获取类型信息第14章 反射 14.2 基本用法 在使用反射时,我们会经常使用到反射的种类(Kind),reflect.Kind在Go语言reflect包中的定义如下&#xff…

认知水平越低的人,越喜欢回复“收到”

前几天后台有位粉丝留言: “有一次回复’收到’,竟被领导痛批一顿! 领导什么活都让我干,找资料、填表格、开会,虽然明知忙不过来,内心也不乐意做个打杂工,但嘴巴却只能缓缓吐出‘收到’两个字……

设计模式之中介者模式

Mediator design pattern 中介者模式的概念、中介者模式的结构、中介者模式的优缺点、中介者模式的使用场景、中介者模式的实现示例、中介者模式的源码分析 1、中介者模式的概念 中介者模式,又称调停模式,即定义一个中介者来封装原有多个对象之间的依赖…

SpringBoot中Redis使用之jedis

目录 pom.xml中导入坐标 application.yml添加配置 lettcus与jedis区别 本人springboot版本2.7.6&#xff0c;redis版本5.0.14.1亲测可用 pom.xml中导入坐标 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId&…

大学生自学Python去面试,月薪为何如此少?问题究竟出在哪?

市场上需要的Python人员非常多&#xff0c;而且按照现在的势头&#xff0c;以后会需要更多的Python开发人员&#xff0c;理由是以后每个人公司都会有自己的网站&#xff0c;有自己的开发部&#xff0c;对于用户体验看的非常重要。所以Python程序员就会很吃香。随时时间的推移&a…

62354-43-2,标记肽vLK-对硝基苯胺

很多蛋白在细胞中非常容易被降解&#xff0c;或被标记&#xff0c;进而被选择性地破坏。但含有部分D型氨基酸的多肽则显示了很强的抵抗蛋白酶降解能力。 纤溶酶和微纤溶酶的底物。微纤溶蛋白水解D-VLK-pNA的Km为0.361 /- 0.017 mM, kcat为40.3 /- 3.3 s&#xff0c;而原生纤溶蛋…

非零基础自学Golang 第12章 接口与类型 12.2 接口的创建与实现 12.2.2 接口赋值

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.2 接口的创建与实现12.2.2 接口赋值第12章 接口与类型 12.2 接口的创建与实现 12.2.2 接口赋值 如果用户自定义的类型实现了某个接口类型所声明的一组方法&#xff0c;那么这个用户定义的类型的值就可以赋…

2021遥感应用组三等奖:基于PolSAR和高光谱遥感的黄河口湿地协同分类研究

作品介绍 一、作品概述 受人类活动和气候变化的影响,滨海湿地正经历着显著的变化。滨海湿地生态系统的监测具有重要的现实意义。同时,随着卫星遥感技术的快速发展,可以利用高空间分辨率、高光谱分辨率和高时间分辨率的多源数据对滨海湿地进行高精度分类。 本作品利用珠海1…

磨金石教育摄影技能干货分享|优秀手机摄影作品欣赏

在摄影中&#xff0c;动物摄影并不好拍&#xff0c;因为动物的姿态&#xff0c;所处的环境都不是人所能控制。所以需要摄影师们提早调整好参数&#xff0c;耐心的等待和观察。而且要反复多拍&#xff0c;才能得到心仪的照片。 这些还只是普通的动物摄影&#xff0c;还有难度更高…

sg90舵机基本认知

什么是舵机&#xff1a; 如下图所示&#xff0c;最便宜的舵机sg90&#xff0c;常用三根或者四根接线&#xff0c;黄色为PWM信号控制 用处&#xff1a;垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90、0-180、0-360 怎末控制电机&#xff1f; …

硬件设备运行小程序,FinClip来帮忙

如今小程序技术日趋成熟&#xff0c;但大多小程序的运行都依赖于微信、百度、支付宝、今日头条等各大巨头&#xff0c;使得小程序的运营十分受限。并且&#xff0c;企业也更希望能实现“一次开发&#xff0c;多端运行”。因此&#xff0c;今天就来跟大家分享一下离开各大巨头&a…

20款前端特效动画及源码

最近优化项目时看到一些实用的特效 感觉还不错 下面就分享给大家 代码量过长的我就不展示了 可以去在这里资源站源码部分预览下载 1.Loading加载动画 在canvas画布上&#xff0c;我们动态绘制许多多边形&#xff0c;这些多边形伴随着颜色的随机变化和旋转&#xff0c;形成了奇…

KingbaseES Clusterware 高可用案例之---构建iSCSI共享存储

案例说明&#xff1a; 在KingbaseES Clusterware高可用的架构中&#xff0c;集群节点需要访问共享的存储设备&#xff0c;可以使用FC SAN、iscsi SAN、NAS等存储设备。本案例详细描述了&#xff0c;在Linux系统下构建 iscsi存储服务器及客户端访问的过程&#xff0c;为部署King…

8Manage SRM电子采购软件为企业带来采购优势

在如今各行行业竞争激烈的环境中&#xff0c;企业想要从中脱颖而出&#xff0c;利用现代化电子采购软件来建立优势是必不可少的。采用电子采购软件的优势越来越明显&#xff0c;其许多用途也越来越为人所知。企业使用电子采购的主要原因是为了控制强大的库存、减少采购重复和改…

GNU编译器常见伪操作

伪操作不会生成机器码&#xff0c;只是在编译阶段告诉编译器怎么做。类似于C语言中的 #if、#define 等带“#”的&#xff0c;#if 告诉编译器哪段不需要被编译&#xff0c;#define 告诉编译器哪些宏需要替换。 不同编译器&#xff0c;伪操作的语法不一样&#xff0c;这里主要介…

python帮我省下了这笔冤枉钱

背景 今天不得不说一说我这个电脑的事情。我这个电脑是2年前买的&#xff0c;屏幕非常大&#xff0c;是16寸的。 基本上没什么缺点&#xff0c;就是每隔一年&#xff0c;就要处理一下储存问题。 为什么呢&#xff0c;因为我的这台电脑的储存是512G的。所以不是太大。 但是今天…