1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
1.2 问题描述
当前的多选下拉树没有自带的全选功能,在根节点较多的时候,全选比较麻烦。那么如何实现多选下拉树的默认全选呢?
1.3 实现思路
多选下拉树的默认值格式为:总部,财务部,部长;总部,财务部,会计。可以在 sql 中将下拉树数据字典的几列拼接起来,构造出一个默认值的格式。然后在控件值里利用 joinarray() 函数,拼接成一个字符串来作为默认值。
注:该方案对数据结构有一定限制,需要通过编写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:
2.3 拼接构建默认值
1)新建一个数据集 ds4,sql语句为:select 货主地区||','||货主省份||','||货主城市 from 订单 where 货主地区 !='' and 货主省份 !='' and 货主城市 !='',如下图所示:
注:此处需要根据实际需求修改 SQL,最终将每个节点值的完整路径输出即可。如果设置了返回叶子节点,则 SQL 拼接出的节点中不能有目录节点。
2)选中下拉树控件,在「控件设置>属性>高级>控件值」选择公式,输入以下公式:JOINARRAY(value("ds4",1),";"),如下图所示:
2.4 效果预览
2.4.1 PC 端
保存模板,点击预览,效果如下图所示:
2.4.2 移动端
App 与 HTML5 端效果相同,如下图所示:
3. 模板下载
已完成模板,可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\下拉树控件默认全选.cpt
点击下载模板:下拉树控件默认全选.cpt