1. 概述编辑
1.1 应用场景
下拉框参数具有多层树状结构的数据,效果如下图所示:
1.2 实现思路
通过分层构建下拉树控件在下拉树数据定义界面选择对应的数据集。其实就是 FR 中的动态 SQL,在这里需要将每个 SQL 定义为一个报表数据集。
2. 示例编辑
2.1 准备数据
数据集 ds1,查询出所有地区,SQL 语句为:SELECT 货主地区 FROM 订单 where 货主地区!=""
数据集 ds2,根据第一层 layer1 的值查询出省份,SQL 语句为:SELECT 货主省份 FROM 订单 where 货主省份!="" and 货主地区='${layer1}'
数据集 ds3,根据前两层 layer1、layer2 的值查询出城市,SQL 语句为:SELECT 货主城市 FROM 订单 where 货主城市!="" and 货主地区 = '${layer1}'and 货主省份='${layer2}'
注:这里是通过 layer1、layer2 来引用,以此类推。其中 layer1,layer2 等均是预定义好的,不可更改。
2.2 设计报表
1)参数面板拖入下拉数选框
2)选择属性表>高级>数据字典,构建方式选择普通 ,选择每层对应的数据集,下拉树便完成了。操作方式如下图:
1)第一层
2)第二层
3)第三层
下拉数三种构建方式说明:
1)极速分层构建:https://help.fanruan.com/finereport/doc-view-1990.html
2)自动构建
自动构建树能够根据数据自动构建出下拉树,无需一层一层定义数据,但是其必须使用树数据集来构建。
3)普通分层构建
不是所有的数据都能自动构建出下拉树,因此需要分层构建。
层次 1:通过 数据字典 来定义下拉框的实际值与显示值。
层次 2:根据层次1的数据进行过滤,需要定义成数据集,然后通过数据查询返回数据集定义的列。数据集定义成:SELECT 字段 FROM 表名 WHERE 层次1的字段 = '${layer1}'
注:layer1 表示取层次 1 节点的值,若在层次 3 中调用,则是 SELECT 字段 FROM 表名 WHERE 层次2的字段 = '${layer2}'依次类推。
2.3 效果查看
1)PC端
点击分页预览,效果如下图所示:
2)移动端
3.模板下载编辑
已完成模板,可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\下拉树控件普通分层构建.cpt
点击下载模板:下拉树控件普通分层构建.cpt