RDL(C) Report Design Step by Step 2: SubReport
RDL(C) Report Design Step by Step 2: SubReport
前两天,有网友在Blog上评论要求将子报表的配置贴出来,由于这两天有些别的事情,所以耽搁了;另外,自己也比较懒,有些东西明明应该早就写出来的。呵呵,说声“对不起”,然后还有“谢谢你”!
OK,这篇随笔就讲一下RDLC报表中子报表SubReport的实现步骤。
首先来看一下,本文的示例的运行结果。
图1 主子报表示例运行结果
主子报表的数据源显然也应该是两个具有主子关系的数据表,本文示例依然使用Northwind数据库的订单和订单明细表作为数据源。
1、在Visual Studio 2005中创建一个Windows应用程序RDLCSR。
2、在项目中添加数据源,数据源并不一定用来为报表提供数据(当然Visual Studio 2005提供的操作非常方便),主要是在报表设计时可以方便向报表中进行字段拖曳。添加数据源意味着在项目中添加了一个数据集Orders.xsd文件,当报表的数据不是来源于关系型数据库(如Flat Files或Web Services等)时,我们可以自己定义一个xsd文件作为报表设计时的数据源,而在程序中重新为报表载入数据。
3、在项目中添加报表rptOrder.rdlc和rptOrderDetail.rdlc分别作为示例的主报表和子报表。
4、为子报表rptOrderDetail.rdlc添加参数pOrderId,指定其数据类型为Integer,然后如图2进行子报表的布局设计。
图2 子报表rptOrderDetail.rdlc布局设计
5、为主报表rptOrder.rdlc进行如图3所示的布局设计。
图3 主报表rptOrder.rdlc布局设计
6、在主报表rptOrder.rdlc的子报表控件上单击右键,使用“属性”菜单调出“子报表属性”对话框。在“常规”选项卡中的子报表下拉列表中选择rptOrderDetail;切换到“参数”选项卡,在“参数名称”列中,系统会自动检测到步骤4中定义的子报表的参数pOrderId,并在“参数值”列中指定参数值为=Fields!订单ID.Value。
7、在子报表rptOrderDetail.rdlc中选择表格控件,使用右键菜单“属性”调出“表属性”对话框,在“筛选器”选项卡中进行入图4的设置。这主要是为了在订单明细中筛选当前订单的明细数据,当然这一步骤可以在程序中用代码指定。
图4 在子报表rptOrderDetail.rdlc中指定筛选器
好了,至此报表布局的设置已经完成了,下面需要在应用程序中显示报表并给主子报表分别提供数据。
8、在窗体frmMain中添加ReportViewer控件rptMain,并在rptMain的“ReportViewer任务”中选择报表rptOrder.rdlc。
9、在窗体frmMain中添加图5所示的代码:
图5 窗体frmMain的代码
可见,必须对ReportViewer控件的LocalReport对象添加SubReportProcessing事件,而该事件主要也就是为了子报表提供数据。
现在就可以运行应用程序查看结果了,如图6所示。
图6 示例运行结果(未给列表指定分组)
在图6中,我们看到出现两个订单显示在同一页面,而在实际应用中,我们可能希望,每个页面
上只显示一条订单。此时,可以进行以下的设置:
10、在主报表rptOrder.rdlc中,选择列表控件,右键“属性”弹出“列表属性”对话框,在“常规”选项卡中,单击按钮“编辑详细信息组”弹出“分组和排序属性对话框”并进行如图7所示的设置。
图7 为列表指定分组并设置分页显示选项
事实上,主子报表和钻取报表有着相似的地方,所以如果看了这篇随笔有什么不明白的地方,可以参看一下我的另一篇随笔RDLC Report Step by Step 1: DrillThrough Report。
Demo下载
RDL(C) Report Design Step by Step 2: SubReport相关推荐
- RDL(C) Report Design Step by Step 3: Mail Label
RDL(C) Report Design Step by Step 3: Mail Label Crystal Report在报表向导中提供了三种向导类型给用户进行选择--Standard.Cross ...
- RDL(C) Report Design Step by Step 1: DrillThrough Report
RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...
- RDL(C) Report Design Step by Step
RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...
- (转 蜡人张)RDL(C) Report Design Step by Step 1: DrillThrough Report
前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容,于是不少网友和我联系,问了一些关于报表设计方面的问题,最近准备写几篇关于RDLC报表设计的随笔. 这篇随笔主要描述 ...
- Design POX controller step by step
Design POX controller step by step In this article, I'll describe how to understand the POX controll ...
- 数据库设计Step by Step (10)——范式化
引言:前文(数据库设计Step by Step (9)--ER-to-SQL转化)讨论了如何把ER图转化为关系表结构.本文将介绍数据库范式并讨论如何范式化候选表.我们先来看一下此刻处在数据库生命周期中 ...
- 数据库设计Step by Step (9)——ER-to-SQL转化
2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...
- 【Step By Step】将Dotnet Core部署到Docker下
一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...
- python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...
最新文章
- pandas set_index 与 reset_index
- python爬虫正则表达式实例-3.Python爬虫入门_正则表达式(简单例子)
- 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- vnc--centos 7 安装和配置
- 2016 大数据版图
- 【SPOJ-QTREE】树链剖分
- Tomcat安装及Eclipse配置教程
- 完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
- mybatisplus 使用案例
- luogu_4551【题解】最长异或路径 trie树
- 腾讯云IM-SDK集成(web端)完成IM登录
- hdu 5294 Tricks Device 最短路建图+最小割
- 4.widows对象
- 基于STM32设计的实时心率检测仪
- Vue+高德地图API的使用(点击地图搜索周边信息)
- iPhone突然掉电快是什么情况,该如何解决?
- 机动车c1科三考试语言灯光,史上最全科目三灯光模拟图解
- 新疆几十公里花海开始盛放,一株580年最老野树,开出最艳鲜花
- 账户信息不存在的问题
- 严重的编程错误或致文件删除、黑客使用新恶意软件逃避检测|1月26日全球网络安全热点