RDLC使用手册
RDL(Report Definition Language)是报表定义语言的缩写。那么微软为何后来又提出RDLC,即在RDL基础上加C(C代表Client-side processing),这是微软基于RDL在.NET上继续完善的结果,同时也凸显了RDLC的客户端处理能力。由于微软MSDN和网络上对于RDLC的介绍比较少(MSDN只是一些控件简单介绍,至于其它网络上除了蜡人张的博文waxdollblogs/比较完整、系统外,就没有更有价值的参考资料),本人就冒充大侠,介绍一下本人对RDLC的认识,主要有下述几方面内容:
1) 为什么要使用RDLC报表;
2) RDLC简单Demo;
3) RDLC规范简介;
4) RDLC常用控件介绍;
5) RDLC参数介绍;
6) RDLC钻取功能实现;
7) RDLC自定义工具条;
8) RDLC设计器实现;
本手册提供的相关资料列表:
1) RDLC规范;
2) 本手册DEMO程序;
3) RDLC自定义打印程序;
4) RDLC设计器程序;
1、 为什么要使用RDLC报表
为什么要使用RDLC报表,蜡人张在其博文“RDLC报表(一)”中已经很好的阐述了这一点。
VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,自.NET“紧密”集成Crystal Report后,这可能是开发人员比较单一的选择。但是,这种集成似乎并不非常紧密,网络上充斥着关于使用Crystal Report的各种抱怨,太复杂也许是其最为令人诟病的地方,自定义性比较差也不能为程序员们所容忍。
当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了
针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:
1) 简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;
2) 灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;
3) 高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;
4) 支持DrillThrough数据钻取功能;
5) 导出的Excel文件格式非常完美,而且并不需要安装Excel;
6) 数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值
给RDLC的数据集即可。
7) 展示和数据分离,程序员更是可以编写一个RDLC设计器交有用户使用,这样用户就可以自行设计RDLC报表格式,程序员只负责定制数据接口即可。
RDLC MSDN:msdn.microsoft/zh-cn/library/ms251671(VS.80).aspx
2、 RDLC简单Demo
本文所有RDLC例子都是基于VS2005 C#,所有ReportViewer的处理模式都是Local模式。本报表Demo显示上文中提到的RDLC手册各节内容,下述为Demo的详细steps。
1) 新建项目,选择Windows应用程序项目类型,输入工程名称RDLCDev;
2) 修改Form1窗体名称为FrmRdlcUserGuide,在工具箱—>数据Tab选项卡中选择ReportViewer控件,将其拖入到FrmRdlcUserGuide,默认命名为reportViewer1,调整ReportViewer控件的大小和布局;
3) 在解决方案资源管理器中选择RDLCDev工程,鼠标右击RDLCDev工程,添加新建项,
在添加新项模板中选择“报表”,取名为rdlcuserguide.rdlc,单击添加按钮,然后在解决方案资源管理器中RDLCDev工程下会增加一个rdlcuderguide.rdlc文件,并且会自动打开RDLC设计器;
4) 在RDLC设计器中添加11个TextBox控件,1个作为标题,其余10个作为RDLC使用手册具体内容,对每个TextBox控件进行TextAlign、Color、BorderStyle、Font和TextDecoration等相关属性设置,设计完毕之后,大致如下图所示。
5) 在FrmRdlcUserGuide窗体Load事件中添加下述代码
private void Form1_Load(object sender, EventArgs e)
{
this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
this.reportViewer1.LocalReport.ReportPath = "rdlcuserguide.rdlc";
this.reportViewer1.RefreshReport();
}
6) 编译、运行RDLCDev工程,运行结果大致如下图所示。
3、 RDLC规范简介
微软的RDLC协议规范定义了什么是报表?描绘了RDLC的报表定义关系图,报表定义的XML描述,元素定义,表达式等内容。
1) 协议规范对报表的定义
A report is a combination of three kinds of information:
·Data or information on how to obtain the data (queries) as well as the structure of the data.
·Layout or formatting information that describes how the data is presented.
·Properties that the report such as author, parameters, images within the report, etc.
2) 报表定义关系图,6张关系图是RDLC协议规范的核心内容,了解掌握了这些关系图基本上也就掌握了RDLC报表。
协议规范中还有另外3张Figure:Table、Matrix和Chart,在下节RDLC常用控件介绍中附上。
3) 协议规范还介绍了RDLC报表常用的表达式、元素定义等内容,具体请大家参看协议规范。
4、 RDLC常用控件介绍
RDLC设计工具箱上总共有9种控件:文本框(TextBox)、折线(Line)、表(Table)、矩阵(Matrix)、矩形(Rectangle)、列表(List)、子报表(SubReport)、图表控件(Chart)、图像控件(Image)。下图ctlsDemo.rdlc设计器所示为所有控件的设计演示。
1) 由于表格控件、矩阵控件、列表控件和图表控件必须填充数据集,因此把所有控件布局完毕之后,创建一个数据集。解决方案资源管理器中,选中RDLCDev工程,右击添加新建项,在新建项类型模板里选择“数据集”,取名“ctlsDemo.xsd”,单击“添加”。
ctlsDemo.xsd添加完毕之后,在解决方案资源管理器中会增加一个ctlsDemo.xsd文件,并前VS IDE会自动打开ctlsDemo.xsd设计页面。在设计页面中右击,添加Datatable,将其命名为vSales,该表描述的是产品的销售额信息,为vSales表添加列,列信息如下:
ProdCat System.String
SubCat System.String
OrderYear System.Int32
控件的使用 OrderQtr System.String
Sales System.Double
2) 文本框控件、折线控件、矩形控件使用相对简单,这里不细说;
3) Image控件,现在RDLC设计器模式下,选择“报表”菜单,“嵌入图像”,在“嵌入图像”对话框中,载入一个本地图像文件即可。然后设置Image控件的Source属性为Embedded,设置Value属性为刚才处理的嵌入图像即可。当然还有别的方式可以显示图像,大家可以Google一下,关键字为RDLC、嵌入图像;
4) 图表控件,使用图表控件的一个关键是要设置好图表属性页面中的数据TAB页相关内容。主要有值、类别组和序列组定义,大家可以参考Demo;
5) 表格控件、矩阵控件和子报表控件,在后续内容中会详细介绍;
4.1 表格控件使用介绍
1) Table控件是RDLC报表显示数据的一个核心控件,关于Table控件,在微软提供的RDLC规范里有详细的介绍,其大致内容可以用下述的一张类UML图来表示;
2) 新建报表文件,命名为ctlTableDemo.rdlc;
3) 在ctlTableDemo.rdlc设计器中,拖入Table控件,默认情况下是3行3列,其中第1行为
表头行(我们理解为列标题行),第二行为详细信息行(我们理解为报表内容展示区域),第三行为表尾行(我们理解为汇总区域)。可以整行选中,然后右击鼠标添加行或者删除行,也可以整列选中,然后右击鼠标添加或者删除列。上文中提到的数据集合有5个字段,因此需要5列来显示,为此需要增加两列。
4) 在数据源窗口中(如果没有显示的话,选择【数据】菜单下的【显示数据源】即可)选择上文中创建的ctlsDemo.xsd数据集,将ProdCat、SubCat、OrderYear 、OrderQtr和Sales分别拖入到Table控件的详细信息行的不同列中去。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论