FineReport企业报表工具-JS根据条件显示参数控件

news2024/11/20 23:27:34

1. 概述

 1.1 版本

报表服务器版本

功能变更

11.0

--

1.2 问题描述

在使用参数控件时,有时我们希望部分参数控件在没满足条件时不显示,满足条件后再显示,如下图效果,只有前面的下拉框选择了内容之后,后一层下拉框控件才显示出来。

1.3 实现思路

首先将被控制的控件初始化为不可见或者不可用,然后在条件控件上增加编辑结束事件,通过 JavaScript 脚本设置被控制控件可见或可用。

1.3 接口介绍

setEnable(boolean):设置是否可用,true 为可用,false 为不可用

setVisible(boolean):设置是否可见,true 为可见,false 为不可见

2. 示例

 2.1 准备模板

打开模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\parameter\\MultiValue\MutiValue.cpt

模板参数面板样式如下图所示:

我们用这个模板中的 area 作为条件控件,province 作为被控控件来说明设置过程。

2.2 设置控件不可见

先设置省份和城市相关的控件为不可见,这样,在报表初始化时,参数面板就置灰显示地区控件。

1)点击 province 「下拉框控件」,选择「控件设置>属性」,取消勾选「可见」,如下图所示:

2)同样的方法将 city 「下拉框控件」也设置为不可见,如下图所示:

3)同样的方法,将省份和城市两个「标签控件」也设置为不可见,如下图所示:

2.3 添加事件

1)选择 area 「下拉框控件」,为其添加一个「编辑后」事件,即使用 JS 方法在 area 控件选完值后将 province 控件和省份标签设置为可见,如下图所示:

JavaScript 代码如下:

var province = this.options.form.getWidgetByName("province");//获取下拉框控件province

var area = this.options.form.getWidgetByName("area");//获取下拉框控件area

var thislen = this.getValue().length;//取area控件中值的长度

//如果area控件值有长度,设置province控件和省份标签可见,如果无长度设置为不可见且打印“请选择地区”

if(thislen) {

    province.setVisible(true);

    this.options.form.getWidgetByName("label3").setVisible(true);

} else {    

    province.setVisible(false);

    this.options.form.getWidgetByName("label3").setVisible(false);

    alert("请选择地区");

}

2)同样的方法,为 province 控件也添加「编辑后」事件,如下所示:

JavaScript 代码如下:

var city = this.options.form.getWidgetByName("city");//获取下拉框控件city

var province = this.options.form.getWidgetByName("province");//获取下拉框控件province

var thislen = this.getValue().length;

//如果province控件值有长度,设置city控件和城市标签可见,如果无长度设置为不可见且打印“请选择省份”

if(thislen) 

{

city.setVisible(true);

this.options.form.getWidgetByName("label5").setVisible(true);

}

else {

    city.setVisible(false);

    this.options.form.getWidgetByName("label5").setVisible(false);

    alert("请选择省份");

}

显示代码

2.4 预览效果

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

注:不支持移动端。

总结

帆软FineReport在使用参数控件时,有时我们希望 帆软报表软件 部分参数控件在没满足条件时不显示,满足条件后再显示,如下图效果,只有前面的下拉框选择了内容之后,后一层下拉框控件才显示出来。首先将被控制的控件初始化为不可见或者不可用,然后在条件控件上增加编辑结束事件,通过 JavaScript 脚本设置被控制控件可见或可用全链路数据建设。

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

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

相关文章

【C语言】重要函数qsort函数的用法

目录 一、qsort函数的介绍 1、整形数组 2、字符数组 3、字符串 4、结构体 二、qsort函数的使用 一、qsort函数的介绍 qsort函数是一种底层快速排序的函数,它的特点就是可以排序任意类型的数据,比如:整形、字符串、浮点型、以及结构体类型。 …

VUE3-组件之间传值《四》

目录 一.父传子,父组件向子组件传值 二.子传父,子组件向父组件传值 三.兄弟组件之间互传,2个组件之间是平级关系,互相传值 组件之间的传值,分为3种方式 一.父传子,父组件向子组件传值 1.建立一个默认的…

零信任深入理解--概念,架构和实现方案

1. 零信任究竟解决了什么问题? 很多人在初步了解“零信任”概念,乃至进一步研究一些技术和产品方案之后,会有种“不过如此”的感觉。 毕竟, IAM(Identity and Access Management,身份识别与访问管理&…

6. 【gRPC系列学习】Balance原理详解

本节开始分析Balance执行原理,通过上面流程可知,Balance Build的创建来自于Resolver的解析完成后调用updateResolverState方法,我们从updateResolverState方法开始分析Balance执行流程。 1. Balance调用流程 1)updateResolverState(s resolver.State, err error) error 方…

Java培训MySQL之全局序列

1.本地文件 不推荐,存在宕机序列丢失问题。 2.数据库方式 数据库序列方式原理 利用数据库一个表 来进行计数累加。但是并不是每次生成序列都读写数据库,这样效率太低。 mycat会预加载一部分号段到mycat的内存中,这样大部分读写序列都是在…

第二章:Linux的目录结构-[基础篇]

一:基础介绍 linux的文件系统是采用级层式的数状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 深刻理解linux树状文件目录是非常重要的,这里我给大家说明一下。 记住一句经典的话:在Li…

通信原理循环码

目录 码多项式 码多项式的按模运算 循环码的码多项式 循环码的生成矩阵 如何寻求任一循环码循环码的生成多项式​ 码多项式 一个长度为的码组可表示成如下多项式形式: 多项式的系数就是码组中的各码元,仅是码元位置标记 。 n7 时: 例&…

Activiti任务的处理以及进阶使用

1.什么是流程实例 流程实例(ProcessInstance)代表流程定义的执行实例 一个流程实例包括所有的运行节点Task,所以我们一般使用来了解当前流程的进度信息 taskService.createTaskQuery().processDefinitionKey(key)例如:用户或者程…

力扣11.盛最多水的容器(双指针解法)

问题描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容…

Mini MP3 Player播放器简介与STC12例程

文章目录1、DFRobot arduino DFPlayer官方资料1-1、简介2-2、 基本功能详述1-3、 用途1-4、 引脚说明1-5、工作模式1-5-1、 串口工作模式1-5-2、 ADC按键工作模式1-5-3、 普通按键工作模式2、串口模式电路搭建与例程参考文献1、DFRobot arduino DFPlayer官方资料 1-1、简介 Th…

KingbaseES运维案例之---服务进程(backend process)终止

​ 案例说明: 如下图所示:KingbaseES服务进程结构 KingbaseES使用客户端/服务器的模型。 对于每个客户端的连接,KingbaseES主进程接收到客户端连接后,会为其创建一个新的服务进程。 KingbaseES 用服务进程来处理连接到数据库服务的…

Java Swing JTextField:单行文本框组件

Swing 中使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息。该类的常用构造方法如下。 JTextField():创建一个默认的文本框。JTextField(String text):创建一个指定初始化文本信息的文本框。JTextField(int columns)&…

Nacos学习笔记 (4)Nacos整合SpringBoot流程

前提,先下载Nacos并启动 Nacos Server。 1. Nacos 融合 Spring Boot 为注册配置中心 实现: 通过 Nacos Server 和 nacos-config-spring-boot-starter 实现配置的动态变更;通过 Nacos Server 和 nacos-discovery-spring-boot-starter 实现服…

OpenAI 3D 模型生成器Point-E极速体验

OpenAI 3D 模型生成器Point-E极速体验 3090显卡,极速体验三维模型生成,体验地址:Gradio 文本生成图像的 AI 最近已经火到了圈外,不论是 DALL-E 2、DeepAI 还是 Stable Diffusion,人人都在调用 AI 算法搞绘画艺术&…

Unreal Engine工程项目目录及对应作用

目录 .vs Binaries:编译文件 Config:配置文件 Content:资产文件 DerivedDataCache:UE针对平台特化的资源版本 Intermediate:中间文件 Saved:自动保存的内容 Source:源(代码&…

ADI Blackfin DSP处理器-BF533的开发详解66:MP3解码(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了读取工程目录下的一个 MP3 文件,对文件进行解码后,将生成的数据以 PCM 文件的形式保存在工程目录…

关于数组的一些题---获取数组对象的各种数据

关于数组的一些题—获取数组对象的各种数据 题目1:将数组对象中的属性值提出来生成新的对象 var arr [{label:男,value: 1}, {label:女,value: 0}]function f(arr) {// 写代码,得到 } var obj f(arr); console.log(obj) // obj {1: 男&am…

1 | Trerraform的使用及创建CVM

目录1 Trerraform简介2 Trerraform的安装2.1 参考地址2.2 安装方式3 使用Terraform管理腾讯云3.1 创建帐号并授权3.2 添加Terraform的环境变量3.3 配置provider文件3.4 terraform init3.5 terraform init -upgrade3.6 terraform plan3.7 terraform apply3.8 terraform destroy4…

5分钟让你做出HR一眼看中的简历,方法简单易操作

写简历,真的是个“力气活”。 但凡求职经验丰富的朋友们,可以仔细想一想,之前我们面试求职的过程中,哪次不是通宵达旦在修改和“润色”简历中,在写简历里费劲功夫,目的还是为了引起HR的关注,从…

DASOU知识星球学的知识图谱

1.经典课程 1.经典课程 东南大学研究生课程: 东南大学研究生课程: https://github.com/npubird/KnowledgeGraphCourse 书籍推荐: 知识图谱的书籍的话可以看下作者是王昊奋【知识图谱:方法、实践与应用】那本书,算是近些年出版的里面质量不错的了&…