VS2010_RDLC自带报表使用手册要点.pdf

上传人:tbuqq 文档编号:5198438 上传时间:2020-02-19 格式:PDF 页数:46 大小:5.05MB
返回 下载 相关 举报
VS2010_RDLC自带报表使用手册要点.pdf_第1页
第1页 / 共46页
VS2010_RDLC自带报表使用手册要点.pdf_第2页
第2页 / 共46页
VS2010_RDLC自带报表使用手册要点.pdf_第3页
第3页 / 共46页
VS2010_RDLC自带报表使用手册要点.pdf_第4页
第4页 / 共46页
VS2010_RDLC自带报表使用手册要点.pdf_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《VS2010_RDLC自带报表使用手册要点.pdf》由会员分享,可在线阅读,更多相关《VS2010_RDLC自带报表使用手册要点.pdf(46页珍藏版)》请在三一文库上搜索。

1、制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 1/46 RDLC 使用总结 1、为什么要使用 RDLC 报表(简介) VS .NET 开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认 Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增 加,也形成了一定规模的用户群。 Visual Studio .NET 进入 2005版本以后, Crystal Report与 IDE

2、 的结合更“紧密”了,至少 我们看不到那个讨厌的注册窗口了。但是,Microsoft 似乎并不容忍在自己的超级工具中竟然 没有报表工具,于是Report Viewer Control 出现了,我把它的报表称为RDLC 报表。 在 VS .NET 2005 之前,SQL Server Reporting Services 中已经提供了一种被称为报表定义语 言(Report Definition Language, RDL)的语言;在 VS .NET 2005 中,Microsoft 提供了针对这 种报表的设计器,并提供了在WinForm 和 WebForm中使用这种报表的能力。Microsoft

3、 将这 种报表的后缀定为RDLC,RDL 仍然是 Report Definition Language的缩写,那么 C 代表什么 呢?C 代表 Client-side processing ,凸显了它的客户端处理能力。 这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report ,让我们来看看它的强 大功能吧: 1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列; 2)灵活的可定制性,用XML 来描述一个报表相关的一切,不用说了吧; 3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报 表生成、预览和打印等一系列操作; 4)支持 Dr

4、illThrough 数据钻取功能; 5)导出的 Excel 文件格式非常完美,而且并不需要安装Excel; 6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋 值给 RDLC 的数据集即可。 7)展示和数据分离,程序员更是可以编写一个RDLC 设计器交有用户使用,这样用户 就可以自行设计 RDLC 报表格式,程序员只负责定制数据接口即可。 RDLC MSDN :http:/ 2、RDLC 简单 Demo 本文所有 RDLC 例子都是基于 VS2005 C# ,所有 ReportViewer 的处理模式都是 Local 模式。 本报表 Demo显示上文中提到的RDL

5、C 手册各节内容,下述为Demo 的详细 steps 。 1)新建项目,选择 Windows 应用程序项目类型,输入工程名称RDLCDev; 2)修改 Form1 窗体名称为FrmRdlcUserGuide,在工具箱 数据 Tab 选项卡中选择 ReportViewer 控 件 , 将 其 拖 入 到 FrmRdlcUserGuide, 默 认命 名为 reportViewer1, 调 整 ReportViewer 控件的大小和布局; 3)在解决方案资源管理器中选择RDLCDev 工程,鼠标右击 RDLCDev 工程,添加新建 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址

6、 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 2/46 项,在添加新项模板中选择“报表”,取名为rdlcuserguide.rdlc,单击添加按钮,然后在解决 方案资源管理器中 RDLCDev 工程下会增加一个 rdlcuderguide.rdlc文件, 并且会自动打开 RDLC 设计器; 4)在 RDLC 设计器中添加11 个 TextBox 控件, 1 个作为标题,其余10 个作为 RDLC 使用手册具体内容,对每个TextBox 控件进行TextAlign 、Color、BorderStyle、 Font 和 TextDe

7、coration等相关属性设置,设计完毕之后,大致如下图所示。 5)在FrmRdlcUserGuide 窗体 Load 事件中添加下述代码 privatevoid Form1_Load( object sender, EventArgs e) this .reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode .Local; this .reportViewer1.LocalReport.ReportPath = “rdlcuserguide.rdlc“; this .reportViewer1.Re

8、freshReport(); 6)编译、运行 RDLCDev 工程,运行结果大致如下图所示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 3/46 3、RDLC 常用控件介绍 RDLC 设计工具箱上总共有9 种控件:文本框 (TextBox)、折线 (Line)、表(Table)、矩阵 (Matrix)、矩形(Rectangle) 、列表(List)、子报表 (SubReport) 、图表控件 (Chart)、图像控件 (Image)。 下图 ctlsDemo.

9、rdlc 设计器所示为所有控件的设计演示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 4/46 1)由于表格控件、矩阵控件、列表控件和图表控件必须填充数据集,因此把所有控件布 局完毕之后,创建一个数据集。解决方案资源管理器中,选中RDLCDev 工程,右击添加新建 项,在新建项类型模板里选择“数据集”,取名“ctlsDemo.xsd”,单击“添加”。 ctlsDemo.xsd添加完毕之后,在解决方案资源管理器中会增加一个ctlsDemo.xsd文件,并 前 V

10、S 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 设计器模式下,选择“报表”菜单,“嵌入图像”,在“嵌 入图像”对话框中,载入一个本地

11、图像文件即可。然后设置Image 控件的Source 属性为 Embedded ,设置 Value 属性为刚才处理的嵌入图像即可。当然还有别的方式可以显示图像, 大家可以 Google一下,关键字为RDLC、嵌入图像; 4)图表控件,使用图表控件的一个关键是要设置好图表属性页面中的数据TAB 页相关 内容。主要有值、类别组和序列组定义,大家可以参考Demo; 5)表格控件、矩阵控件和子报表控件,在后续内容中会详细介绍; 4.1 表格控件使用介绍 1)Table控件是 RDLC 报表显示数据的一个核心控件,关于Table 控件,在微软提供的 制表日期: 2011 年 08 月 01 日制表人:

12、潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 5/46 RDLC 规范里有详细的介绍,其大致内容可以用下述的一张类UML 图来表示; 2)新建报表文件,命名为ctlTableDemo.rdlc; 3)在 ctlTableDemo.rdlc 设计器中,拖入Table控件,默认情况下是3 行 3 列,其中第 1 行为表头行 (我们理解为列标题行),第二行为详细信息行 (我们理解为报表内容展示区域) , 第三行为表尾行(我们理解为汇总区域) 。可以整行选中,然后右击鼠标添加行或者删除行, 也可以整列选中,然后右击鼠标添加或

13、者删除列。上文中提到的数据集合有5 个字段,因此需 要 5 列来显示,为此需要增加两列。 4)在数据源窗口中(如果没有显示的话,选择【数据】菜单下的【显示数据源】即可) 选择上文中创建的ctlsDemo.xsd数据集,将 ProdCat、SubCat、OrderYear 、OrderQtr 和 Sales 分别拖入到 Table控件的详细信息行的不同列中去。 5)设置标题行文字显示都居中 ,Sales的内容显示右对齐 ,ProdCat 、SubCat 、OrderYear 、 OrderQtr 和 Sales文本框的字体颜色全部设置成Blue,Sales文本框由于显示的内容为销售额, 因此需设

14、置数字显示格式,小数位数。鼠标右击Sales 文本框,选择【属性】 ,在文本框属性 窗口中,选择格式 Tab页,在格式代码处,选择数字1,234.00格式即可,选择完毕之后该文 本框的数字就以逗号千分位作为分割符,保留2 位小数显示,效果如下图所示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 6/46 6)插入一个组实现分组统计功能。选中整行,鼠标右击,选择【插入组】,弹出分组和 排序属性对话框,设置分组名称、分组方式、是否显示组头或者组尾等属性即可,本文分组

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

16、控件,在窗体FrmCtlTableDemo 代码窗口里 输入以下代码: privatevoid FrmCtlTableDemo_Load( object sender, EventArgs e) this .reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode .Local; this .reportViewer1.LocalReport.ReportPath = “rdlcctlTableDemo.rdlc“; / reportViewer1.LocalReport.DataSources.Add

17、(new ReportDataSource ( “ctlsDemo_vSales“, LoadData(); / 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 7/46 this .reportViewer1.RefreshReport(); privateDataTable LoadData() DataSet dataSet = new DataSet (); dataSet.ReadXml(“datactlsDemo.xml“); return dataSe

18、t.Tables0; 8)运行效果如下图所示 4.2 矩阵控件使用介绍 1)矩阵控件主要用于显示CrossTable之类的报表,因此其列数可以是Static的,也可以 是 Dynamic 并且 Can grow 的,关于矩阵控件,在RDLC 协议规范里也有介绍,其大致内容可 以用下图表示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 8/46 2)新建报表文件,命名为ctlMatrixDemo.rdlc ; 3)在 ctlMatrixDemo.rdlc 设计器中

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

20、up1 的 表 达 式 为 =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(CDbl(Fields!Sales.Va

21、lue) 8)设计完之后,效果如下图所示; 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 9/46 9)新建窗体FrmCtlMatrixDemo ,然后在该窗体上添加ReportViewer控件,在窗体FrmCtlMatrixDemo代码窗口 里输入以下代码: privatevoid FrmCtlMatrixDemo_Load(object sender, EventArgs e) this .reportViewer1.ProcessingMode = Micr

22、osoft.Reporting.WinForms.ProcessingMode .Local; this .reportViewer1.LocalReport.ReportPath = “rdlcctlMatrixDemo.rdlc“; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource ( “ctlsDemo_vSales“, LoadData(); / this .reportViewer1.RefreshReport(); privateDataTable LoadData() DataSet dataSet

23、= new DataSet (); dataSet.ReadXml(“datactlsDemo.xml“); return dataSet.Tables0; 10) 运行效果如下图所示 4.3 子报表控件使用介绍 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 10/46 子报表作为主报表的一个补充 ,在显示明细内容的时候比较管用,本文从如何填充子报表 数据,如何传递参数两方面介绍子报表如何使用。 1)新建 RDLC 报表,命名为 subReportDemo.rdl

24、c; 2)在 subReportDemo.rdlc设计器中,拖入一个文本框和一个子报表控件; 3)设置文本框的文本显示为“子报表控件演示”; 4)设置 子报 表 控 件 属 性 , 主要 设置 其 “ 子 报 表 ” 的值 ,这 里设 为 上 文 讲 到 的 ctlTableDemo报表,效果如下图所示; 5)新建一个窗体 FrmSubReportDemo ,添加如下代码 privatevoid FrmCtlSubReportDemo_Load( object sender, EventArgs e) reportViewer1.LocalReport.SubreportProcessing

25、+= new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); / this .reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode .Local; this .reportViewer1.LocalReport.ReportPath = “rdlcsubReportDemo.rdlc“; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource

26、( “ctlsDemo_vSales“, LoadData(); / this .reportViewer1.RefreshReport(); void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) e.DataSources.Add(new ReportDataSource ( “ctlsDemo_vSales“, LoadData(); privateDataTable LoadData() DataSet dataSet = new DataSet (); 制表日期: 2011

27、 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 11/46 dataSet.ReadXml(“datactlsDemo.xml“); return dataSet.Tables0; 这里,区别于其它显示RDLC报表程序的代码就是对子报表的处理,本文在FrmCtlSubReportDemo_Load 事件里添加 了一个对子报表事件的处理:reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEven

28、tHandler(LocalReport_SubreportProcessing); 6)关于子报表参数如何传递,在RDLC 报表参数介绍一文中介绍; 7)运行效果如下图所示 4、RDLC 参数介绍 5.1 报表参数处理 1)修改上文提高的 ctlTableDemo.rdlc报表为例,该报表用于显示产品每季度的销售额。 修改该报表,给该报表添加一个参数prod_cat ,用于过滤只显示产品系统为参数prod_cat值对 应的产品季度销售额。 2)在 ctlTableDemo.rdlc 设计器中,选择【报表】菜单, 【报表参数】菜单,在报表参数 界面中,添加一个报表参数取名为“prod_cat_

29、sub ”,类型为String,提示信息为“输入产品 系列名称”,允许空白值; 3)选中 table1 控件,鼠标右击,选择【属性】 ,选中【筛选器】 Tab 页,在筛选器列表 中添加: =Fields!ProdCat.Value = =Parameters! prod_cat_sub.Value; 4)在FrmCtlTableDemo 窗体中添加下述代码,用红色表示的2 行代码: privatevoid FrmCtlTableDemo_Load( object sender, EventArgs e) this .reportViewer1.ProcessingMode = Microsof

30、t.Reporting.WinForms.ProcessingMode .Local; this .reportViewer1.LocalReport.ReportPath = “rdlcctlTableDemo.rdlc“; / reportViewer1.LocalReport.DataSources.Add(new ReportDataSource ( “ctlsDemo_vSales“, LoadData(); 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354

31、 12/46 / ReportParameter p = new ReportParameter(“ prod_cat_sub“, “Component“); reportViewer1.LocalReport.SetParameters(new ReportParameter p ); / this .reportViewer1.RefreshReport(); 5)运行结果如下图所示,显示Component产品系列的产品季度销售额; 5.2 子报表参数处理 1)在程序里面,本人还未找到直接向子报表传递参数的方法,但是可以用其它的方法变 通实现,在主报表的subreport控件属性里面设置参

32、数,通过主报表传递过去。 2)以上文提到的 FrmSubReportDemo为例,其主报表为subReportDemo.rdlc,先设置主 报表的参数。在subReportDemo.rdlc报表设计器中选择【报表】 , 【报表参数】,在报表参数对 话框中,增加一个参数。参数名称为prod_cat,参数类型为 String,参数提示为“输入产品系 列名称”。 3)选中子报表 subreport1,鼠标右击,选择【属性】 ,选择【参数】 tab 页,添加一个参 数。参数名称为“ prod_cat_sub ”,参数值 =Parameters!prod_cat.Value 。为此,主报表的参数名 与子

33、报表的参数名称要不一致。 4)打开 subreport1对应的子报表设计器 ,本文为 ctlTableDemo.rdlc ,该 ctlTableDemo.rdlc 的参数在上文中已经设置,这里不再赘述。 5)运行效果如下图所示。 (源码网整理: ) 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 13/46 5、RDLC 钻取功能实现 本 Demo在主报表会显示一个部门列表(部门ID、部门名称等),然后通过钻取功能可实 现特定部门的员工信息展示,下述为具体操作步骤

34、。 1)准备好两个数据源,本文为2 个 xml 文件(departments.xml和 Employees.xml) ,这两 个文件放在项目的Data 文件夹下,特别注意的是这两个文件的【复制到输出目录】属性要选 择“始终复制”,负责工程编译的时候不会将这两个文件生成到bin 目录下。 2)新建报表,命名为“ drillthrough.rdlc ”;新建一个数据集,命名为“departments ”, 在该数据集中添加一个Datatable,表结构如下: DepartmentID Int32 Name String GroupName String ModifiedDate DateTime

35、rowguid String 3)在 drillthrough.rdlc 设计器中,拖入一个文本框和一个Table控件。文本框显示内容为 “Drill Through Demo”,在 Table控件中拖入 DepartmentID 和 Name 两列。 4)添加 Name 列的导航、钻取功能。右击Name 文本框,选择【属性】,选择【导航】 Tab 页,在“超级链接”处选择“跳至报表”(该报表为显示钻取实现的目标报表,假设为 drillthroughDetail.rdlc ,且已 经存 在,因 此 在实践 时, 可以再 本 操作之 前, 先创建 一个 drillthroughDetail.rd

36、lc 报表) ,设置“跳至报表”为drillthroughDetail ,点击【参数】按钮,会 弹 出 参 数 设 置 对 话 框 。 在 对 话 框 中 , 添 加 一 个 参 数 , 名 称 为 DepartmentID, 值 为 =Fields!DepartmentID.Value; 5)设计 drillthroughDetail.rdlc报 表 , 先 新建 一 个 该报 表 对应 的 数 据集 , 名 称 为 employees ,添加一个 DataTable ,名称为 employee,employee表部分内容如下: 1 制表日期: 2011 年 08 月 01 日制表人: 潘梦

37、军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 14/46 Terri 1 1 Duffy Lee false 245797967 VP Engineering 1998-03-03T00:00:00.0000000-08:00 1961-09-01T00:00:00.0000000-07:00 adventure-worksTerri Terriadventure- 1 S Tad Orman 586-883-8338 true F 300 2 63.4615 1 20 false true 2003-01-15T19:

38、26:13.9000000-08:00 1b76e019-0d60-4d48-b405-c9144fb9b3ab 从表的内容中,我们可以大致判断出其结构是什么样的啦。 6)拖入一个文本框控件和表格控件到drillthroughDetail.rdlc报表设计器中,并从 employees数据集中拖入相应字段到表格控件中,设置完毕之后,效果如下图所示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 15/46 7)设置 drillthroughDetail.rdlc

39、报表的参数:参数名称为DepartmentID,类型为 Integer; 8)设 置drillthroughDetail.rdlc报 表 表 格 控 件 的 筛 选 器 , 表 达 式 为 =CInt(Fields!DepartmentID.Value),运算符为 =,值为 =Parameters!DepartmentID.Value 。 9)新建一个窗体 FrmDrillThrough ,添加一个 ReportViewer 控件,在代码编辑窗口,添 加下述代码: privatevoid FrmDrillThrough_Load(object sender, EventArgs e) repo

40、rtViewer1.ProcessingMode = ProcessingMode .Local; reportViewer1.LocalReport.ReportPath = “Rdlc/drillthrough.rdlc“; reportViewer1.LocalReport.DataSources.Add(new ReportDataSource ( “departments_department“, LoadData( “Datadepartments.xml“); reportViewer1.RefreshReport(); / 读取 XML 数据 privateDataTable

41、LoadData( string xmlFilePath) DataSet dataSet = new DataSet (); dataSet.ReadXml(xmlFilePath); return dataSet.Tables0; private void reportViewer1_Drillthrough(object sender, DrillthroughEventArgs e) LocalReport localReport = (LocalReport)e.Report; localReport.DataSources.Add(new ReportDataSource(“emp

42、loyees_employee“, LoadData(“DataEmployees.xml“); 10) 运行效果如下图所示。 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 16/46 鼠标移到 Name一列,会变成手的形状,如单击Engineering,就会钻取取来Engineering 部门的员工信息,如下图所示。 6、RDLC 自定义工具条 1)自定义工具条可以理解为对ReportViewer的 ToolBar 功能的一种变通实现 ,如添加代 码实现 Too

43、lBar 刷新按钮的功能、 ToolBar 页导航功能。 如刷新功能代码实现为: this .rptViewer.RefreshReport(); 如 ToolBar 停止按钮的代码实现为: 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 17/46 this .rptViewer.CancelRendering(0); 。 2)在做项目的时候,如果用ReportViewer 控件做报表展示工具的话,打印和导出的代 码实现,应该要掌握。 导出功能: ReportVi

44、ewer 导出都是通过 Render来实现的,如下代码为导出Excel Microsoft.Reporting.WinForms.Warning Warnings; string strStreamIds; string strMimeType; string strEncoding; string strFileNameExtension; /this.rptViewer.LocalReport.Render( byte bytes = this .rptViewer.LocalReport.Render(“Excel“ , null , out strMimeType, out strEn

45、coding, out strFileNameExtension, out strStreamIds, out Warnings); string strFilePath = “D:exportdemo.xls“; using (System.IO.FileStream fs = new FileStream (strFilePath, FileMode .Create) fs.Write(bytes, 0, bytes.Length); 打印例子下载http:/ ReportViewer 控件需要通过点击打印按钮来打印一样,并没有提供直接的打印函数,为此本 人封装了打印功能 ( 在附件的 w

46、hhrdlc.dll文件中 )并开放了打印函数 ,用户可以调用下面语句 打印报表: / 打印出错时,错误信息描述 String errMsg = String .Emptys; / 调用打印函数 ( 弹出打印设置对话框)返回 false打印失败; bool bln = Printer.PrintDialog(this .reportViewer1.LocalReport, out errMsg); / 调用打印函数 ( 直接打印 ) 返回 false打印失败; bool bln = Printer.Print (this .reportViewer1.LocalReport, out errM

47、sg); 7、设计器实现 8.1 RDLC XML 分析 1)RDLC 文件其实就是一个XML 文件,有很多结点和元素,在解决方案资源管理器中 选中某个 rdlc 文件,鼠标右击,选择【打开方式】 ,在打开方式对话框中选择XML 编辑器, 制表日期: 2011 年 08 月 01 日制表人: 潘梦军 地址 : 广东省中山市石岐区东明路23 号 TEL(0760)-8713353 FAX(0760)-8713354 18/46 单击确定按钮即可。 在 xml 文件中我们可以看到DataSources 、 PageHeader、DataSets 、ReportItems等结点,网上有篇Vs2005

48、 报表设计器 XML分析总结的博文 http:/ 2)这里比较关键的就是DataSet的处理,Rdlc 报表无论是表格显示还是矩阵显示或者列 表显示数据,都需要关联DataSet 。在前面提到的所有篇幅中,都是先创建一个数据集,并为 该数据集添加一个DataTable ,然后将表字段拖放到表格控件、矩阵控件或者列表控件,用以 显示数据。这么做,从效率上来看不是最高的,因为手工产生一个目标DataTable比较耗时。 为此,我们可以先直接编辑rdlc 的 xml 文件,编辑器 dataset的内容即可,如下所示: ProdCat System.String SubCat System.String OrderYear System.Int32 OrderQtr System.String Sales System.Double DummyDataSo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1