ActiveReports 交互式报表:为图表添加数据钻取功能

ActiveReports 为分析类型的报表提供多种交互能力,包括:动态过滤、动态排序、向下钻取和贯穿钻取。本文将介绍DashBoard类型报表中为图表添加贯穿钻取功能,点击图表数据之后可以跳转到明细报表,以查看该类产品的全年订单明细数据。<br/><img src="/image.ashx?picture=image_thumb_314.png" alt="ActiveReports 交互式报表:为图表添加数据钻取功能" width="500px" />

发布于 2013/12/25 00:00

ActiveReports

ActiveReports 为分析类型的报表提供多种交互能力,包括:动态过滤、动态排序、向下钻取和贯穿钻取。本文将介绍DashBoard类型报表中为图表添加贯穿钻取功能,点击图表数据之后可以跳转到明细报表,以查看该类产品的全年订单明细数据。

报表中显示的数据是,将2011年各类产品的全年订单量通过柱状图进行显示,点击图表数据之后可以跳转到明细报表,以查看该类产品的全年订单明细数据。

第一步:创建 Web 应用程序,并添加一个页面报表

2015-02-06_143636

第二步:添加报表数据源

打开报表设计界面,从VS的菜单中选择 【视图】 >> 【其他窗口】 >> 【报表资源管理器】,以打开ActiveReports的报表资源管理器,在资源管理器的数据源节点中右键添加数据源,并按照以下截图设置属性

名称:NWind_CHS

类型:Microsoft OleDb Provider

OLE DB 提供程序:Microsoft.Jet.OLEDB.4.0

服务器或文件名称:D:\ActiveReports_DrillThrough_Chart\ActiveReports_DrillThrough_Chart\Data\NWind_CHS.mdb

备注:我在创建工程时将源码放在了D盘,你下载示例程序之后,需要修改数据源文件的地址,不然会出现找不到数据源的错误提示。

image

在添加的数据源 NWind_CHS 上鼠标右键添加数据集,并设置以下属性:

名称:Sales

查询:

Select 类别.类别名称,t.* from (
SELECT 类别.类别ID,SUM(订单明细.数量) AS 销售量 FROM (( 订单 
 INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID)
 INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID)
 INNER JOIN 类别 ON 产品.类别ID = 类别.类别ID
 WHERE DATEDIFF("yyyy",订单.订购日期,'2011-01-01') = 0
 GROUP BY 类别.类别ID, 类别.类别名称
 ORDER BY 类别.类别ID, 类别.类别名称 ) as t
inner join 类别 on t.类别ID = 类别.类别ID

image

第三步:设计DashBoard报表模板,添加图表

从VS工具箱的 ActiveReports 分类下将 Chart 拖拽到报表设计界面,图表类型选择柱形图

image

然后选中Chart之后从属性窗口中的命令链接区域点击【图表数据】命令,并设置以下属性:

【图表-常规】选项设置:

常规

名称

Chart1



工具提示

2011年度各类产品销售量统计表



数据集名称

Sales


image

 

【图表-系列值】选项设置:

系列值

常规

系列标签

销售量



=Sum([销售量])









image

系列值

样式

填充色

Orange



渐变色

TopBottom



渐变背景结束颜色

DarkRed





image

系列值

标签

显示点标签

选中



数据标签

=Sum([销售量])









image

要为图表增加交互功能,最关键的是设置系列值的操作属性,要为销售订单明细报表还没有创建好,我们先保留这一步操作,等创建好订单明细报表之后再设置【操作】属性。

【图表-类别分组】选项设置:

类别分组

常规

名称

Chart1_CategoryGroup1



表达式

=[类别名称]



标签

=[类别名称]





image

 

以上就是图表的全部选项设置,得到以下结果:

image

第四步:创建订单明细报表

添加一个名为 rptOrderDetailsForSub.rdlx 的RDL报表,并按照以下设置相关属性

1、打开报表设计界面

2、在报表资源管理器的参数节点中添加以下两个参数,用于实现主报表和明细报表之间的数据传递,因为我们需要显示一类产品的全部订单,所以我们需要传递产品类型编号

名称:CategoryID、数据类型:Integer、隐藏:选中

名称:CategoryName、数据类型:Integer、隐藏:选中

image

3、添加报表数据源,数据源创建方式参考【第二步】中的方法

4、添加数据集

常规-名称:OrderDetails

为数据集添加参数是为了,接受主报表传递的产品类型编号,然后作为SQL查询语句的参数值

参数-名称:Param、值:=[@CategoryID]

image

在设置好数据集的参数之后,我们需要提供数据源的查询SQL语句:

select 订单.订单ID, 订单.客户ID, 订单.订购日期, 产品.产品名称,订单明细.数量, 订单明细.单价, 订单明细.折扣  from (( 订单
inner join 订单明细 on 订单.订单ID = 订单明细.订单ID )
inner join 产品 on 订单明细.产品ID = 产品.产品ID )
where 产品.类别ID = ?
ORDER BY 订单.订单ID;

image

5、设计报表界面

在报表设计界面添加Table,并设置相应的列数据字段信息,参考下图

image

第五步:建立主报表和明细报表之间的参数关系

再次打开主报表,选中Chart控件,在属性窗口的【图表数据】命令链接,切换到【系列值-操作】页面,设置以下属性,以建立主报表和明细报表之间的关系

image

通过以上操作,我们完成主报表和明细报表的全部创建工作,接下来就是在页面中显示报表

在ASPX页面中添加WebViewer控件,并在页面后台代码中添加以下代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("Reports/rptSalesByCategory.rdlx")));
        WebViewer1.Report = report;
    }

运行截图:

ActiveReports_DrillThrough_Chart


源码下载:

ActiveReports报表数据源:贯穿钻取报表数据源.rar

ActiveReports 报表控件| 下载试用

ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。

您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态