历史版本3 :动态显示图表系列或分类 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1. 问题描述编辑

上一节中介绍了报表跟图表的联动,即点击报表中的数据让图表的分类轴数据或系列值跟着变化,那么如果点击报表数据列的名称,使图表的系列名称或者分类轴动态变化又该如何实现呢 ,效果如下:

2. 解决思路编辑

动态显示图表的系列名称和分类轴,那么该图表只能使用单元格数据集,只需要让单元格动态显示数据列就行,在ds1.select()和ds1.group()函数的使用章节中有介绍到ds1.group()这个方法来获取数据集中的数据列,我们这里将数据列名称以动态参数的形式传递到该函数中,使数据列的数据动态显示在单元格中,然后图表数据源就来自于该动态变化的单元格。

3. 示例编辑

3.1 新建数据集
新建一张空白模板,添加数据集ds1:SELECT * FROM [销量]
3.2 模板设计
  • 动态数据列的实现
新增一个col的模板参数,默认值为:“销售员”,标题单元格B1直接使用公式=$col,动态数据列值所在单元格B2输入使用公式=ds1.group($col,,true),报表主体设计如下图:
注:B2单元格为图表的系列名称(动态变化),父格为A2,A2单元格是显示图表的分类轴数据,C2单元格为图表的系列值,对销量进行求和,根据B2单元格的变化而变化(动态变化)。
另:ds1.group($col,,true)公式的意思是,获取ds1数据集中col参数值数据列的所有值,并合并所有相同项,注意中间有一个空白的条件,需要两个逗号。
  • 图表设计
合并动态列下方的一片单元格,插入图表,图表类型为柱形图,图表数据源为单元格数据源,分类轴为A2,系列名为B2,系列值为C2,如下图:
  • 动态参数
在图表上方,动态列下方插入一行,输入各数据列的名称(即需要动态展现的数据列的名称),整个报表设计如下图:
选中所有数据列名称的单元格,即A3到C3单元格,右键,选择超级链接,点击按钮,增加一个名为col的动态参数,如下图:
注:该动态参数的意义为:点击该超级链接时,就将当前被点击的单元格的值传递给参数col,参数col是动态列中使用的到的参数,因此动态列所在单元格就会显示被点击数据列的值,图表也就随着变化。
隐藏动态列所在的第一行和第二行,模板便完成了。
3.3 效果查看
保存该模板,点击分页预览,即可查看上面所展示的效果。
注:如果要动态展示分类轴,只需要将图表的分类轴数据源设置为动态列中动态变化的一列即可,同上。
已完成模板可参照:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\HyperLink7.cpt

在线查看示例效果请点击Hyperlink7.cpt