历史版本4 :多选下拉树实现不同级别之间的查询 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

数据库中有3个级别的数据,分别是地区,城市,以及客户名称,如果想实现同时选择查询出华东地区下所有公司以及北京的某个公司的数据,这个该怎么实现呢?效果如下:

2. 数据准备编辑

新建3个数据查询ds1,ds2,ds3
ds1:SELECT * FROM [客户]
ds2:SELECT * FROM [客户] where 地区 = '${layer1}'
ds3:SELECT * FROM [客户] where 城市 = '${layer2}',实际值为客户ID

3. 报表主体设计编辑

报表主体设计如下图:

4. 参数界面设计编辑

4.1 新建模板参数
切换到参数界面,点击菜单栏中的模板>模板参数,点击添加按钮,新建模板参数tree
4.2 构建树
点击右侧下方的的按钮,然后将tree控件的类型选择为下拉树。
  • 数据
选中下拉树控件,在控件属性面板中点击数据,开始构建树。
构建方式选择分层构建。
层次1:选择ds1,实际值和显示值都为地区。
层次2:选择ds2,实际值和显示值都为城市。
层次3:选择ds3,实际值为客户ID,显示值为客户名称。
4.3 属性设置
高级里面勾选多选,即使用多选下拉树,如果不勾选,则为单选下拉树,其他属性默认,属性的具体介绍请查看下拉树控件
  • 结果返回完整层次路径
如果勾选该选项,那么,下拉树返回的值为完整的层次路径,在使用时需要通过treelayer函数进行获取最底层的值,如果不勾选,则可以直接使用,这里先勾选上。

5. 过滤设置编辑

参数界面和报表主体都设计好了之后,由于我们使用的是模板参数,需要通过参数将参数界面和报表主体联系起来,
双击A2单元格,在过滤属性中设置,客户ID包含于treelayer($tree),如下图:
注:公式treelayer($tree)的意思是返回参数tree中的值的最后一层数据。具体介绍请查看treelayer函数
如果在参数面板设置下拉树属性时没有勾选结果返回完整层次路径,那么其过滤设置如下图:

6. 保存和预览编辑

点击分页预览,则在BS端看到上图的效果,已完成的报表,可参见%FR%\WebReport\WEB-INF\reportlets\doc\Primary\widgetReport\tree.cpt