asp winform 动态加载rdlc报表数据源
RDLC使用手册
1、 为什么要使用RDLC报表
为什么要使用RDLC报表,蜡人张在其博文“RDLC报表(一)”中已经很好的阐述了这一点。 (源码网整理:)
VS .NET开发中,用什么进行报表设计?可能的回答是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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。