主从联动报表
教学视频
目标
要实现的效果如下图所示:
实现
首先需要准备两个数据集,一个包含的employee数据集;一个是包含dept的数据集,如下图:
其中employee数据集在定义时SQL里要添加一个报表参数做为条件:
select * from employee where dept_id=${$deptId}
在这个SQL中引用了一个名为deptId的参数,所以我们需要在报表中定义好该参数,打开报表配置窗口,在第一个标签页报表参数中添加一个名为deptId的参数,如下图:
deptId参数的默认值为空
为报表添加三行五列,各个单元格绑定相关数据集字段,如下图:
选中A1单元格,在右侧属性面板中为其添加一个名为设置deptId参数值为当前单元格值的类型为设置参数的链接,如下图:
在这个链接中,我们配置当前报表中名为deptId的参数值为#,也就是当前链接所在单元格的值。
切换到A1单元格属性面板的渲染页签,为其添加一个名为高亮显示当前部门信息的条件渲染项,如下图:
在这个条件渲染项中,我们设置的条件是如果当前名为deptId的报表参数值与当前条件渲染项所在单元格(也就是A1单元格)的值相等,那么就设置它的背景色为#dd8c3。
保存并预览报表,效果如下图所示:
可以看到,我们基本实现了主从联动效果,但在刚打开时,由于employee没有数据,导致显示了一个空行,我们要实现的效果是employee没有数据的话就什么都不显示。
为了实现这个效果,打开报表模版,选中A3单元格,在其右侧属性面板的渲染标签页下添加一个名为没有数据时隐藏当前行的条件渲染项,如下图:
在这个条件渲染项中,条件左边为isEmpty($deptId),这里的isEmpty是一个内置函数,用于判断当前给定参数值是否为空(null或空字符串),如果为空返回true,所以条件满足时就设置当前单元格所在行的行高为0,也就是将当前单元格所在行隐藏。
保存预览,就可以看到我们需要的效果。