帆软报表之 控件示例 -4
控件示例
2. 示例
1)模板设置
新建普通模板,在A1单元格中添加【按钮控件】,命名为“点击弹框”,如下所示:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333051-22195762.jpg)
2)添加点击事件
给【按钮控件】添加点击事件,添加iframe弹框并在其中嵌入GettingStarted.cpt模板,如下图所示:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333707-140352884.jpg)
设置参数cc值为remoteServletURL,用来获取报表路径
js代码如下:
- var iframe = $("
- iframe.attr("src", cc+"?reportlet=GettingStarted.cpt"); // 给iframe添加src属性
- var o = {
- width : 700, //对话框宽度
- height: 500 //对话框高度
- };
- FR.showDialog("添加", o.width, o.height, iframe,o);//弹出对话框
3)保存模板
保存模板,选择填报预览,实现效果如描述中所示。
按钮的快捷按键设置
1. 描述
有时我们希望能够通过快捷键来触发按钮,我们可以对按钮控件进行快捷键设置来实现。
2. 设置方法
可以通过控件的控件设置来添加或修改触发快捷键。
例如,查询按钮中设置快捷键为enter,则按enter就会触发查询按钮:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332674-2055602561.jpg)
注:FineReport只支持部分的键设置为快捷键,即不是所有的键都可以设置快捷键。
当将鼠标移至属性表>高级>快捷键时,会出现可以设置的快捷键。支持的快捷键如下图所示,若设置了不属于上述快捷键的按键,快捷键将会无效:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332439-224998441.jpg)
点击按钮发送邮件
1. 描述
在大多数企业当中,邮件沟通是一个非常常见并且重要的沟通工具,经常性,某个员工完成了某一件事件需要用邮件通知各个相关人员,那么在FineReport该怎么实现这种,比如说填报一条数据进数据库的时候就用邮件通知相关人员呢?
2. 示例—(自定义按钮)
这里做一个简单示例,示范FineReport如何实现发送邮件的功能。
实现在参数界面下拉复选框选择收件人,点击按钮时,将所有收件人的邮箱作为邮件正文,当天日期作为邮件标题发送出去。
2.1 模板准备
新建一张空白模板,在模板>模板参数添加1个参数person,并将该参数控件添加到参数面板,控件类型选择下拉复选框,数据字典设置如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333612-296472335.jpg)
2.2 发件人设置
上面收件人邮箱已经设置好了,下面设置发件人邮箱。
在浏览器中输入http://localhost:8075/webroot/decision,用管理员账号登录,点击管理系统>系统设置>邮件,即可配置发件人邮箱,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333201-645122188.jpg)
注:授权码如何获取,查看开启POP3/SMTP服务与生成授权码
注:FR只支持一个发件人,无法动态改变。
发件人邮件配置过程详细介绍请参照邮箱。
点击保存按钮,发件人邮箱则配置好了。
2.3 发送邮件
回到模板,切换到参数界面,选中查询按钮,在右侧的属性面板中选择事件标签页,添加一个点击事件,事件的响应方式选择发送邮件,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333366-1512252897.jpg)
注:正文和标题都支持公式。
2.4 效果查看
保存模板,分页预览,下拉框值选择susie和caixiaolan,点击查询按钮,即会触发点击事件,将邮件发送给susie和caixiaolan,如下图,FineReport会将上述邮件发送给出去:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332219-195816617.jpg)
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332994-792518877.jpg)
3. 示例二(web端内置按钮)编辑
FineReport在web端查看报表时,内置工具栏也有邮件按钮,点击按钮可直接发送邮件,比如说我们预览GettingStarted这个模板,在web端工具栏可以看到邮件按钮,点击,弹出邮件发送配置,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333661-876663017.jpg)
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333331-435593190.jpg)
上传下载文件插件
1. 版本说明
设计器版本
|
上传下载文件插件版本
|
10.0
|
|
9.0
|
V5.9.1
|
8.0
|
V5.6
|
2. 描述
需要将文件上传到服务器保存,并且下载。
因此我们开发了这么一款上传下载插件,将此功能封装,安装此插件后,可以通过可视化界面操作,简洁方便,一目了然。
注:该插件暂不支持决策报表。
3. 插件介绍
3.1 安装启用
设计器插件安装方法参照设计器插件管理
服务器安装插件方法参照服务器插件管理
3.2 启用该插件后
1)上传至服务器
报表填报属性界面,自定义提交中多了上传类型选择,可选择【上传至服务器】,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332936-1695133365.jpg)
注:参数面板中、cpt单元格控件中的控件事件都同步加了上传至服务器功能
注:同名文件覆盖,默认不勾选,不勾选时,同名文件重命名,勾选后实现同名文件直接覆盖
2)上传至FTP
报表填报属性界面,自定义提交中多了上传类型选择,可选择【上传至FTP】,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332914-1174053938.jpg)
注:参数面板中、cpt单元格控件中的控件事件都同步加了上传至服务器功能
注:同名文件覆盖,默认不勾选,不勾选时,同名文件重命名,勾选后实现同名文件直接覆盖
3)下载
超级链接多出一个选项【文件下载】,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332457-1532160423.jpg)
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332904-2074763082.jpg)
4. 示例
下面由一张模板为例,简单说明一下,如何使用此功能。
4.1 文件上传到服务器
在A1中添加文件控件,A2填写公式filename(A1),表示获取A1单元格上传的文件名,用【形态属性】,实际值=$$$,显示值=LEFT(FILENAME(A1), FIND(".", FILENAME(A1)) - 1),如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332671-48441863.jpg)
注:公式LEFT(FILENAME(A1), FIND(".", FILENAME(A1)) - 1),表示find函数找到.进行定位,再使用left函数提取.前面的位数,防止出现多后缀名。
点击模板>报表填报属性
1、添加【内置SQL】将A2单元格的文件名保存到数据库中,为后期数据的下载做准备(这里数据库中有一张表,里面filename的字段用来存储上传的文件的文件名),如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333016-1099691746.jpg)
2、添加自定义提交,提交类型选择上传至服务器,添加一条记录。
【文件】绑定A1单元格,【磁盘路径】填写="D://"(此处示例为D盘根目录),【文件名】绑定LEFT(FILENAME(A1), FIND(".", FILENAME(A1)) - 1) 如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333112-1356145250.jpg)
注:这里文件名可以直接输入内容,或者使用单元格内容或者函数
填报预览,并上传文件,文件上传成功,且文件名为A1单元格的名字,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333771-1811523584.jpg)
4.2 上传文件到FTP
点击模板>报表填报属性
1、添加【内置SQL】将A2单元格的文件名保存到数据库中,为数据的下载做准备。
2、添加【自定义提交】,提交类型选择上传至FTP,点击FTP设置,添加一个ftp,填写ftp地址,勾选匿名登录后,不需要输入用户名和密码。
磁盘路径:"/connie",不填默认为在ftp上的根目录,【文件】绑定A1单元格,【文件名】绑定LEFT(FILENAME(A1), FIND(".", FILENAME(A1)) - 1),如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333533-1658822183.jpg)
注:默认显示默认FTP,若没有设置默认FTP则显示最新设置的FTP的详细信息。
填报预览,并上传文件,文件上传成功,且文件名为A2单元格的内容,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333662-579935388.jpg)
4.3 下载功能
右击修改所在的A2单元格,点击超级链接,增加一个文件下载,具体设置如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332578-1941066271.jpg)
根据文件所在的路径和文件名称填写文件路径和编码类型,如下图:(文件路径="D://"+$$$,这个适应更广)
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333142-2124975930.jpg)
保存模板,点击填报预览,点击下载超链,即可下载文件,如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152333557-1600807339.jpg)
已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\form\上传下载文件.cpt。
文件控件获取文件名、类型和大小
1. 描述
填报报表中,使用文件控件上传文件,可以通过公式获取文件名称,文件类型和文件大小,
filename(file):获取文件名称;
filetype(file):获取文件类型;
filesize(file):获取文件大小。
单文件上传时,上面3个公式返回值均为字符串,多文件上传时,返回值为数组。
2. filename(file)
filename是获取文件名称。
如下图,新建一张模板,在B2单元格中添加一个文件控件,并在C2单元格中输入公式=filename(B2),获取上传文件的名,选择填报预览,点击文件控件,上传一个png文件,如下图所示:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332410-2030053644.jpg)
注:如果上传多文件,则filename获取的是所有文件的名称,中间用逗号隔开,返回值数据类型为数组,如上传2个文件A.xls和B.txt,那么filename的返回值则为["A.xls","B.txt"]
3. filetype(file)
filetype是获取文件类型
file : 为文件控件或者文件所在单元格,当file为单文件时,返回文件类型字符串;当file为多文件时,返回文件类型数组;当file不是文件类型,返回错误信息。
3.1 单文件
如上模板,在D2单元格中输入=filetype(B2),并将文件控件设为只支持单文件上传,填报预览模板,点击文件控件上传一个jpg文件,效果如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332487-1804813421.jpg)
获取到了文件控件的文件类型jpg,由于上传的是单文件,故返回的是字符串类型数据。
3.2 多文件
如上模板,去掉文件控件只支持单文件上传前面的勾选,填报预览模板,点击文件控件,选中3个文件,效果如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332728-805874488.jpg)
filename(B2)返回值为数组,数组数据为["student.mdb","chinanet.jpg","BugReport.txt"],filetype(B2)也是返回数组类型,返回值为["mdb","jpg","txt"]
4. filesize(file)
filesize(file)是获取文件大小,单位为KB。
file : 为文件控件或者文件所在单元格,当file为单文件时,返回文件类型字符串;当file为多文件时,返回文件类型数组;当file不是文件类型,返回错误信息。
类似于filetype,单文件上传时,filesize返回值为字符串,多文件上传,则返回数组。
在E2输入公式=filesize(B2),填报预览模板,效果如下图:
![0](https://img2020.cnblogs.com/blog/1446192/202201/1446192-20220105152332768-812259421.jpg)
拥有自信,努力奋斗,保持乐观积极地情绪,逆着阳光,成功就在前方。自己选择的路,放弃者绝不会成功,成功者绝不放弃。