历史版本3 :TREEDEFAULTPATH-返回下拉树完整路径 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

下拉树控件默认值设置 ,要求默认值必须为节点的完整路径。当下拉树层级较多或下拉树为多选且需要设置多个默认值时,填写节点的完整路径就会非常复杂。所以在层级较多和需要多个默认值的情况下,如何简单填写默认值呢?效果如下图所示:

image.png

1.2 解决思路

通过「自定义函数」实现根据子节点的值找出叶子节点的完整路径。

注:此方法只能用于构建方式为「自动构建」的下拉树控件。

1.3 函数简介

函数:TREENODEFINDER(param1,param2)

释义 :

1)param1 为叶子节点的值,可以是显示值,也可以是实际值。

  • 传入单个值时,以 value 格式传入。

  • 传入多个值时,以数组格式 ARRAY(value1,value2,.....) 传入。

    value 为字符串时需要加 "" 。

2)param2 为构建下拉树控件的树数据集名称,值格式为“TreeName”。

示例:

单值:TREENODEFINDER("部长","Tree1")

多值:TREENODEFINDER(ARRAY("部长","会计"), "Tree1")

2. 示例编辑

2.1 编写自定义函数

编写自定义函数 TREENODEFINDER ,完整代码详见:

https://code.fanruan.com/demo/example/src/branch/release/10.0/src/main/java/com/fr/function/TREENODEFINDER.java

2.2 编译自定义函数

2.2.1 生成 class 文件

编译 2.1中的 TREENODEFINDER 代码 ,生成类文件 TREENODEFINDER.class 。

注:编译时需导入 FineReport 工程 JAR 包,包括安装工程包 %FR_HOME%/lib 下面的所有的包,%FR_HOME%/server/lib 下面的所有包,%FR_HOME%/webapps/webroot/WEB-INF/lib 下面的所有包,还要引入 JDK 的tools.jar。详情请参见 Eclipse 中启动设计器 。

这里也可以不用编译,直接使用编译好的 class 文件,点击下载并解压 TREENODEFINDER.class :TREENODEFINDER.7z

2.2.2 导入 class 文件

将编译生成的 TREENODEFINDER.class 文件复制到%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\function目录下 ,如下图所示:

image.png

2.3 注册自定义函数

打开设计器,选择「服务器」>「函数管理器」,增加一个自定义函数 TREENODEFINDER,选择类com.fr.function.TREENODEFINDER,如下图所示:

2020-09-07_21-54-16.jpg

2.4 模板设置

2.4.1 新建模板

新建普通报表。

1)创建数据集「公司部门」,SQL语句为:

SELECT * FROM 公司部门

如下图所示:

2020-09-07_22-07-51.jpg

2)创建树数据集「Tree1」,如下图所示:

2020-09-07_22-15-02.jpg

2.4.2 设置下拉树控件

在参数面板中添加「下拉树控件」,点击控件,在「组件设置」>「属性」>「数据字典」处,选择「自动构建」,开始构建下拉树,如下图所示:

2020-09-07_22-29-04.jpg

2.5 设置下拉树默认值

使用自定义函数 TREENODEFINDER 设置下拉树默认值。

点击下拉树控件,在「组件设置」>「属性」>「控件值」位置,选择「公式」,输入 TREENODEFINDER("部长", "Tree1") ,如下图所示:

2020-09-07_22-38-47.jpg

2.6 效果预览

2.6.1 PC端

保存模板,点击「分页预览」,效果如 1.1 节所示。

2.6.2 移动端

App 及 HTML5 效果如下图所示:

76bbe219-766e-4567-aae7-8a950970975e.jpg

3. 附件下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\function\自定义函数设置下拉树默认值.cpt

点击下载模板:自定义函数设置下拉树默认值.cpt

点击下载并解压 TREENODEFINDER.class 文件:TREENODEFINDER.7z