ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:610.45KB ,
资源ID:16206385      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16206385.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RDLC使用手册v2.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

RDLC使用手册v2.docx

1、RDLC使用手册v2RDLC使用手册 RDL(Report Definition Language)是报表定义语言的缩写。那么微软为何后来又提出RDLC,即在RDL基础上加C(C代表Client-side processing),这是微软基于RDL在.NET上继续完善的结果,同时也凸显了RDLC的客户端处理能力。由于微软MSDN和网络上对于RDLC的介绍比较少(MSDN只是一些控件简单介绍,至于其它网络上除了蜡人张的博文1) 为什么要使用RDLC报表;2) RDLC简单Demo;3) RDLC规范简介;4) RDLC常用控件介绍;5) RDLC参数介绍;6) RDLC钻取功能实现;7) RDL

2、C自定义工具条;8) RDLC设计器实现; 本手册提供的相关资料列表: 1) RDLC规范;2) 本手册DEMO程序;3) RDLC自定义打印程序;4) RDLC设计器程序;1、 为什么要使用RDLC报表为什么要使用RDLC报表,蜡人张在其博文“RDLC报表(一)”中已经很好的阐述了这一点。 VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,自.NET“紧密”集成Crystal Report后,这可能是开发人员比较单一的选择。但是,这种集成似乎并不非常紧密,网络上充斥着关于使用Crystal Report的各种抱怨,太复杂也许是其最为令人诟病的地方,自定义性比

3、较差也不能为程序员们所容忍。当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称

4、为报表定义语言(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控件,非常方便字

5、段在报表上的排列;2) 灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3) 高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4) 支持DrillThrough数据钻取功能;5) 导出的Excel文件格式非常完美,而且并不需要安装Excel;6) 数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。7) 展示和数据分离,程序员更是可以编写一个RDLC设计器交有用户使用,这样用户就可以自行设计RDLC报表格式,程序员只负责定制数据接口即可。RDLC MSDN:2、 RDLC简单

6、Demo本文所有RDLC例子都是基于VS2005 C#,所有ReportViewer的处理模式都是Local模式。本报表Demo显示上文中提到的RDLC手册各节内容,下述为Demo的详细steps。1) 新建项目,选择Windows应用程序项目类型,输入工程名称RDLCDev;2) 修改Form1窗体名称为FrmRdlcUserGuide,在工具箱数据Tab选项卡中选择ReportViewer控件,将其拖入到FrmRdlcUserGuide,默认命名为reportViewer1,调整ReportViewer控件的大小和布局;3) 在解决方案资源管理器中选择RDLCDev工程,鼠标右击RDLCD

7、ev工程,添加新建项,在添加新项模板中选择“报表”,取名为rdlcuserguide.rdlc,单击添加按钮,然后在解决方案资源管理器中RDLCDev工程下会增加一个rdlcuderguide.rdlc文件,并且会自动打开RDLC设计器;4) 在RDLC设计器中添加11个TextBox控件,1个作为标题,其余10个作为RDLC使用手册具体内容,对每个TextBox控件进行TextAlign、Color、BorderStyle、Font和TextDecoration等相关属性设置,设计完毕之后,大致如下图所示。5) 在FrmRdlcUserGuide窗体Load事件中添加下述代码 private

8、 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

9、的报表定义关系图,报表定义的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

10、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)、列表(Lis

11、t)、子报表(SubReport)、图表控件(Chart)、图像控件(Image)。下图ctlsDemo.rdlc设计器所示为所有控件的设计演示。1) 由于表格控件、矩阵控件、列表控件和图表控件必须填充数据集,因此把所有控件布局完毕之后,创建一个数据集。解决方案资源管理器中,选中RDLCDev工程,右击添加新建项,在新建项类型模板里选择“数据集”,取名“ctlsDemo.xsd”,单击“添加”。ctlsDemo.xsd添加完毕之后,在解决方案资源管理器中会增加一个ctlsDemo.xsd文件,并前VS IDE会自动打开ctlsDemo.xsd设计页面。在设计页面中右击,添加Datatable,

12、将其命名为vSales,该表描述的是产品的销售额信息,为vSales表添加列,列信息如下: ProdCat System.String SubCat System.String OrderYear System.Int32 OrderQtr System.String Sales System.Double2) 文本框控件、折线控件、矩形控件使用相对简单,这里不细说;3) Image控件,现在RDLC设计器模式下,选择“报表”菜单,“嵌入图像”,在“嵌入图像”对话框中,载入一个本地图像文件即可。然后设置Image控件的Source属性为Embedded,设置Value属性为刚才处理的嵌入图像即

13、可。当然还有别的方式可以显示图像,大家可以Google一下,关键字为RDLC、嵌入图像;4) 图表控件,使用图表控件的一个关键是要设置好图表属性页面中的数据TAB页相关内容。主要有值、类别组和序列组定义,大家可以参考Demo;5) 表格控件、矩阵控件和子报表控件,在后续内容中会详细介绍;4.1 表格控件使用介绍1) Table控件是RDLC报表显示数据的一个核心控件,关于Table控件,在微软提供的RDLC规范里有详细的介绍,其大致内容可以用下述的一张类UML图来表示;2) 新建报表文件,命名为ctlTableDemo.rdlc;3) 在ctlTableDemo.rdlc设计器中,拖入Tabl

14、e控件,默认情况下是3行3列,其中第1行为表头行(我们理解为列标题行),第二行为详细信息行(我们理解为报表内容展示区域),第三行为表尾行(我们理解为汇总区域)。可以整行选中,然后右击鼠标添加行或者删除行,也可以整列选中,然后右击鼠标添加或者删除列。上文中提到的数据集合有5个字段,因此需要5列来显示,为此需要增加两列。4) 在数据源窗口中(如果没有显示的话,选择【数据】菜单下的【显示数据源】即可)选择上文中创建的ctlsDemo.xsd数据集,将ProdCat、SubCat、OrderYear 、OrderQtr和Sales分别拖入到Table控件的详细信息行的不同列中去。5) 设置标题行文字显

15、示都居中,Sales的内容显示右对齐,ProdCat、SubCat、OrderYear、OrderQtr和Sales文本框的字体颜色全部设置成Blue,Sales文本框由于显示的内容为销售额,因此需设置数字显示格式,小数位数。鼠标右击Sales文本框,选择【属性】,在文本框属性窗口中,选择格式Tab页,在格式代码处,选择数字1,234.00格式即可,选择完毕之后该文本框的数字就以逗号千分位作为分割符,保留2位小数显示,效果如下图所示。6) 插入一个组实现分组统计功能。选中整行,鼠标右击,选择【插入组】,弹出分组和排序属性对话框,设置分组名称、分组方式、是否显示组头或者组尾等属性即可,本文分组设

16、置如下:分组名称:table1_Group1分组表达式:=Fields!ProdCat.Value;=Fields!SubCat.Value;=Fields!OrderYear.Value,实现产品年度销售额汇总统计功能。不显示组头、显示组尾(至于组头、组尾是个什么样的东西,大家只要动手试一下就一目了然了)在textbox15中输入汉字“合计”,在textbox16文本框中输入合计表达式=Sum(CDbl(Fields!Sales.Value),设置完之后效果如下图所示。7) 新建窗体FrmCtlTableDemo,然后在该窗体上添加ReportViewer控件,在窗体FrmCtlTableD

17、emo代码窗口里输入以下代码: private void FrmCtlTableDemo_Load(object sender, EventArgs e) this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; this.reportViewer1.LocalReport.ReportPath = rdlcctlTableDemo.rdlc; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(ctl

18、sDemo_vSales, LoadData(); / this.reportViewer1.RefreshReport(); private DataTable LoadData() DataSet dataSet = new DataSet(); dataSet.ReadXml(datactlsDemo.xml); return dataSet.Tables0; 8) 运行效果如下图所示4.2 矩阵控件使用介绍1) 矩阵控件主要用于显示CrossTable之类的报表,因此其列数可以是Static的,也可以是Dynamic并且Can grow的,关于矩阵控件,在RDLC协议规范里也有介绍,其

19、大致内容可以用下图表示。2) 新建报表文件,命名为ctlMatrixDemo.rdlc;3) 在ctlMatrixDemo.rdlc设计器中,拖入Matrix控件,默认情况下是2行2列,左上角单元格为空白区域(通常用来显示报表摘要信息如产品/年度等),右上单元格显示为“列”,单击此处可以增加列分组,左下单元格显示为“行”,单击此处可以添加行分组,右下单元格显示为“数据”,单击此处可以添加静态行、静态列。 4) 在矩阵左上角单元格空白区域拖入矩形控件,然后在该矩形控件中拖入一个折线控件和两个文本框控件,折线当做矩形的对角线,两个文本框内容为产品和年度分布在折线两侧。5) 增加两个行分组,分别为m

20、atrix1_RowGroup1和matrix1_RowGroup2,matrix1_RowGroup1的表达式为=Fields!ProdCat.Value,matrix1_RowGroup2的表达式为=Fields!SubCat.Value。6) 增加两个列分组,分别为matrix1_ColumnGroup1何matrix1_ColumnGroup2,matrix1_ColumnGroup1的表达式为=Fields!OrderYear.Value,matrix1_ColumnGroup2的表达式为=Fields!OrderQtr.Value。7) 在“数据”单元格中编辑表达式=Sum(CDb

21、l(Fields!Sales.Value)8) 设计完之后,效果如下图所示;9) 新建窗体FrmCtlMatrixDemo,然后在该窗体上添加ReportViewer控件,在窗体FrmCtlMatrixDemo代码窗口里输入以下代码: private void FrmCtlMatrixDemo_Load(object sender, EventArgs e) this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; this.reportViewer1.LocalReport.R

22、eportPath = rdlcctlMatrixDemo.rdlc; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(ctlsDemo_vSales, LoadData(); / this.reportViewer1.RefreshReport(); private DataTable LoadData() DataSet dataSet = new DataSet(); dataSet.ReadXml(datactlsDemo.xml); return dataSet.Tables0; 10) 运行效果如下图

23、所示4.3 子报表控件使用介绍 子报表作为主报表的一个补充,在显示明细内容的时候比较管用,本文从如何填充子报表数据,如何传递参数两方面介绍子报表如何使用。1) 新建RDLC报表,命名为subReportDemo.rdlc;2) 在subReportDemo.rdlc设计器中,拖入一个文本框和一个子报表控件;3) 设置文本框的文本显示为“子报表控件演示”;4) 设置子报表控件属性,主要设置其“子报表”的值,这里设为上文讲到的ctlTableDemo报表,效果如下图所示;5) 新建一个窗体FrmSubReportDemo,添加如下代码 private void FrmCtlSubReportDem

24、o_Load(object sender, EventArgs e) reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); / this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; this.reportViewer1.LocalReport.ReportPath = rdlcsubReport

25、Demo.rdlc; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(ctlsDemo_vSales, LoadData(); / this.reportViewer1.RefreshReport(); void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) e.DataSources.Add(new ReportDataSource(ctlsDemo_vSales, LoadData(); priva

26、te DataTable LoadData() DataSet dataSet = new DataSet(); dataSet.ReadXml(datactlsDemo.xml); return dataSet.Tables0;这里,区别于其它显示RDLC报表程序的代码就是对子报表的处理,本文在FrmCtlSubReportDemo_Load事件里添加了一个对子报表事件的处理:reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportPro

27、cessing);6) 关于子报表参数如何传递,在RDLC报表参数介绍一文中介绍;7) 运行效果如下图所示5、 RDLC参数介绍5.1 报表参数处理1) 修改上文提高的ctlTableDemo.rdlc报表为例,该报表用于显示产品每季度的销售额。修改该报表,给该报表添加一个参数prod_cat,用于过滤只显示产品系统为参数prod_cat值对应的产品季度销售额。2) 在ctlTableDemo.rdlc设计器中,选择【报表】菜单,【报表参数】菜单,在报表参数界面中,添加一个报表参数取名为“prod_cat_sub”,类型为String,提示信息为“输入产品系列名称”,允许空白值;3) 选中ta

28、ble1控件,鼠标右击,选择【属性】,选中【筛选器】Tab页,在筛选器列表中添加:=Fields!ProdCat.Value = =Parameters! prod_cat_sub.Value;4) 在FrmCtlTableDemo窗体中添加下述代码,用红色表示的2行代码: private void FrmCtlTableDemo_Load(object sender, EventArgs e) this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; this.reportVi

29、ewer1.LocalReport.ReportPath = rdlcctlTableDemo.rdlc; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(ctlsDemo_vSales, LoadData(); / ReportParameter p = new ReportParameter(prod_cat_sub, Component); reportViewer1.LocalReport.SetParameters(new ReportParameter p ); / this.reportViewer

30、1.RefreshReport(); 5) 运行结果如下图所示,显示Component产品系列的产品季度销售额;5.2 子报表参数处理1) 在程序里面,本人还未找到直接向子报表传递参数的方法,但是可以用其它的方法变通实现,在主报表的subreport控件属性里面设置参数,通过主报表传递过去。2) 以上文提到的FrmSubReportDemo为例,其主报表为subReportDemo.rdlc,先设置主报表的参数。在subReportDemo.rdlc报表设计器中选择【报表】,【报表参数】,在报表参数对话框中,增加一个参数。参数名称为prod_cat,参数类型为String,参数提示为“输入产品

31、系列名称”。3) 选中子报表subreport1,鼠标右击,选择【属性】,选择【参数】tab页,添加一个参数。参数名称为“prod_cat_sub”,参数值=Parameters!prod_cat.Value。为此,主报表的参数名与子报表的参数名称要不一致。4) 打开subreport1对应的子报表设计器,本文为ctlTableDemo.rdlc,该ctlTableDemo.rdlc的参数在上文中已经设置,这里不再赘述。5) 运行效果如下图所示。6、 RDLC钻取功能实现本Demo在主报表会显示一个部门列表(部门ID、部门名称等),然后通过钻取功能可实现特定部门的员工信息展示,下述为具体操作步骤。1) 准备好两个数据源,本文为2个xml文件(department

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2