帆软FineReport下拉框联动实现

news2025/1/22 15:40:59

在用帆软做报表展示时,有需求是要进行联动效果,记录下来,方便查看。
帆软版本:10.0

背景

编辑栏两个控件,产品ID是输入框,用户可输入产品ID,产品名称为下拉框,可选择产品名称。当用户输入产品ID后,则不可再选择产品名称;当选择产品名称后,不可再编辑产品ID。编辑栏如下图所示。
在这里插入图片描述

第一步、添加控件的事件

1)选中 产品ID编辑框,在右侧的事件栏,添加编辑结束事件,在JavaScript脚本编辑区域,添加以下代码

// 设置控件是否可用,true为可用,false为不可用
this.options.form.getWidgetByName("spu_name").setEnable(false);

添加步骤如下所示。
在这里插入图片描述
点击运行,浏览器渲染出来的页面,在产品ID输入123,再选择产品名称选择框,此时选择框不可编辑,效果如下。
在这里插入图片描述

2)选中 产品名称选择框,在右侧的事件栏,添加编辑结束事件,在JavaScript脚本编辑区域,添加以下代码

// 设置控件是否可用,true为可用,false为不可用
this.options.form.getWidgetByName("spu_id").setEnable(false);

添加步骤如下所示。
在这里插入图片描述
点击运行,浏览器渲染出来的页面,在产品名称选择“苹果14”,再编辑产品ID输入框,此时输入框不可编辑,效果如下。
在这里插入图片描述
以上即两个控件的简单联动,在JavaScript框中添加调试 debugger ,可在页面进行调试。

// 获取选择框的值
var spu_name = this.options.form.getWidgetByName("spu_name").getValue();
// 弹框显示
alert(spu_name)
// 调试
debugger

调试页面如下图所示。
在这里插入图片描述
在官方文档中对帆软FineReport的二次开发JavaScript有介绍,感兴趣的可以详细了解。

// 获取控件的值
this.options.form.getWidgetByName("spu_name").getValue();
// 获取控件的显示值
this.options.form.getWidgetByName("spu_name").getText();
// 设置可见或不可见,true为可见
this.options.form.getWidgetByName("spu_id").setVisible(false);
知识延伸

可以对开始时间和介绍时间进行校验,即获取两个控件值,比较并进行弹窗提示。

// 获取开始时间的值
var startDate= this.options.form.getWidgetByName("startDate").getValue();
// 获取介绍时间的值
var endDate= this.options.form.getWidgetByName("endDate").getValue();
// 开始日期判空,并提示
if (startDate == "" || startDate == null) { 
	FR.Msg.alert("错误","开始时间不能为空");
	return false;
};
// 结束日期判空,并提示
if (endDate == "" || endDate == null) { 
	FR.Msg.alert("错误","结束时间不能为空");
	return false;
};
//判断开始日期是否大于结束日期
if (start > end) { 
	FR.Msg.alert("错误","开始时间不能大于结束时间"); 
	return false;
}
// 日期转换,用于比较
// 将开始日期转化为Date型
var startdate = new Date(start.substring(0,4), start.substring(4,6), start.substring(6,8)); 
// //将结束日期转化成Date型
var enddate = new Date(end.substring(0,4), end.substring(4,6), end.substring(6,8)); 
// 将两个日期相减得出的毫秒数转化为天数
var subdate = (enddate - startdate) / (1000 * 60 * 60 * 24); 
// 设置时间间隔为30天,大于30的天给予弹窗意识
if (subdate > 30) { 
	FR.Msg.alert("错误","结束日期必须在开始日期30天之内"); 
	return false;
}
参考文档

【1】https://help.fanruan.com/finereport10.0/doc-view-1195.html

异常处理

【1】报错信息:CustomJSError : Cannot read properties of undefined (reading ‘setEnable’)
处理方案
检查变量是否正确,原因一般为获取不到该对象。

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

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

相关文章

C语言实例_双向链表增删改查

一、双向链表介绍 双向链表(Doubly Linked List)是一种常见的数据结构,在单链表的基础上增加了向前遍历的功能。与单向链表不同,双向链表的每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。 作用…

NPM中管理团队

目录 1、关于开发团队 2、创建团队 3、将组织成员添加到团队 3.1 从CLI管理团队 4、从团队中删除组织成员 5、管理团队对组织包的访问 5.1 向团队添加包访问权限 Web网页上的团队添加包访问权限 使用CLI向团队添加包访问权限 5.2 从组中删除包访问权限 从Web网页上的…

【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容

文章目录 前言一、下载二、使用步骤1.引入样式2.html代码 总结 前言 提示:这里可以添加本文要记录的大概内容: vue后台框架,若依系统里有一个富文本编辑器,效果如下 在package.json里面查看,发现插件名叫quill 插件的…

Systick滴答定时器

今天,对Systick滴答定时器进行资料的整理,这个定时器在程序中的作用就是提供延时函数。参考(【STM32】Systick滴答定时器_一只大喵咪1201的博客-CSDN博客) Systick滴答定时器的介绍 相关寄存器 寄存器CTRL 补充HCLK 寄存器LOAD…

Linux 网络编程 和 字节序的概念

网络编程概述 不同于之前学习的所有通讯方法,多基于Linux内核实现,只能在同一个系统中不同进程或线程间通讯,Linux的网络编程可以实现真正的多机通讯! 两个不相关的终端要实现通讯,必须依赖网络,通过地址…

【C++】—— c++11新特性之 lambda

前言: 上期,我们学习了有关 C11 一些属于了解的新特性介绍。本期,我们要讲到的内容则属于 需要掌握 的知识点之一。 目录 (一)lambda 的引入 (二) lambda表达式 1、lambda表达式语法 2、捕获…

压力监测设备——监测压力的仪器仪表

压力监测设备的原理和差压变送器相同,所不同的是压力监测设备低压室压力是大气压或真空。压力监测设备是一种接受压力变量,经传感转换后,按一定比例将压力变化转换成标准信号的仪表。 压力监测设备的输出信号传送到中央控制室进行压力指示和…

【大模型】基于 LlaMA2 的高 star 的 GitHub 开源项目汇总

【大模型】基于 LlaMA2 的高 star 的 GitHub 开源项目汇总 Llama2 简介开源项目汇总NO1. FlagAlpha/Llama2-ChineseNO2. hiyouga/LLaMA-Efficient-TuningNO3. yangjianxin1/FireflyNO4. LinkSoul-AI/Chinese-Llama-2-7bNO5. wenge-research/YaYiNO6. michael-wzhu/Chinese-LlaM…

万字精讲——数据结构栈与队列必会OJ练习

W...Y的主页 💕 代码库分享 😊 在之前的博客中,我们学习了栈与队列的基本内容,并且实现了栈与队列。今天我们进行刷题训练,走进栈与队列的世界中去感受一番!!! 目录 括号匹配问题…

springboot集成redisson

springboot集成redisson有两种方式,分别是集成redisson-spring-boot-starter或redisson-spring-data。由于作者的项目和redisson-spring-boot-starter有冲突,所以选择集成redisson-spring-data,下面介绍集成集成步骤,已单机版redi…

对CSV格式的数据文件进行插值处理

使用Python程序,实现对一个较短的csv文件,进行差值处理,并绘制GUI界面; 这个程序是一个使用Python的Tkinter库构建的GUI应用程序,用于对CSV格式的数据文件进行插值处理。下面我会逐步解释程序的各个部分和功能&#x…

使用 docker 搭建 granfana+prometheus 监控平台监控测试服务器资源

互联网发展的今天,人们对互联网产品的用户体验要求也越来越高,企业为了能提供更优质的用户体验,就会绞尽脑汁想尽各种办法。而对于服务器的资源监控,搭建一个资源监控平台,就是一个很好的维护优质服务的保障平台。利用…

函数的参数传递和返回值-PHP8知识详解

本文学习的是《php8知识详解》中的《函数的参数传递和返回值》。主要包括:向函数传递参数值、向函数传递参数引用、函数的返回值。 1、向函数传递参数值 函数是一段封闭的程序,有时候,程序员需要向函数传递一些数据进行操作。可以接受传入参…

Python如何输出文本到屏幕

如何输出文本到屏幕 在Python中,要将文本输出到屏幕,可以使用print()函数。这个函数是Python中的内置函数,非常常用,让我们一起来学习如何使用它。 使用print()函数 print()函数用于将内容输出到终端(屏幕&#xff…

从0开始配置eslint

没有在.eslintrc文件中配置parserOptions指定语言版本和模块类型 {"parserOptions": {"ecmaVersion": 7, //指定es版本为es2016"sourceType": "module", //使用import导入模块} }eslint还不能识别jsx语法 {"parserOptions"…

Android11.0 Launcher3单层app列表页排序功能实现

1.概述 在11.0的定制化开发中,对于Launcher3的功能定制也是好多的,而对于单层app列表页来说排序功能的开发,也是常有的功能这就需要了解加载app数据的流程,然后根据需要进行排序就可以了, 如图: 2. Launcher3 单层app列表页排序功能实现 packages\apps\Launcher3\src\…

禅道后台命令执行漏洞

漏洞简介 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,…

Matlab彩色图像转索引图像

索引图像 索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像包括一个数据矩阵X,一个调色板矩阵map,也称为颜色映像矩阵。其中,数据矩阵X可以是8位无符号整型、16位无符号整型或双精度类型。调色板矩阵map是一个m3的数据阵列&…

操作符详解-C语言

目录 一、操作符分类 二、算术操作符 三、移位操作符 3.1. 左移操作数 3.2 右移操作符 四、位操作符 五、赋值操作符 六、单目操作符 七、关系操作符 八、逻辑操作符 九、条件操作符 十、逗号表达式 十一、下标引用函数调用和结构体成员 一、操作符分类 操作符分为算…

ArrayList的介绍

arrayList数组列表,特点是 ①有序:y元素存入的顺序和取出的顺序一致; ②可重复:可以存储重复的元素 ③可为null:可以存储多个null 优点:查询快 缺点:插入删除慢 size是元素的个数,容…