RDLC 报表的制作资料讲解.docx
《RDLC 报表的制作资料讲解.docx》由会员分享,可在线阅读,更多相关《RDLC 报表的制作资料讲解.docx(6页珍藏版)》请在冰豆网上搜索。
RDLC报表的制作资料讲解
RDLC报表的制作
在VS.NET2005之前,SQLServerReportingServices中已经提供了一种被称为报表定义语言(ReportDefinitionLanguage,RDL)的语言;在VS.NET2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是ReportDefinitionLanguage的缩写,那么C代表什么呢?
C代表Client-sideprocessing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃CrystalReport,让我们来看看它的强大功能吧:
1、简单易用的控件,特别是Table控件,非常方便字段在报表上的排列
2、灵活的可定制性,用XML来描述一个报表相关的一切
3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作
4、支持DrillThrough数据钻取功能
5、导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟,而且并不需要安装Excel
下面就开始制作一张分组统计的简单报表:
1打开VS,新建一个WinForm程序,添加一个新建项,选择报表
2
3
4报表是要数据绑定的,因此下一步添加数据源。
可以通过添加“添加数据源”来通过数据库连接字符串链接到一个表或视图,不过也不必通过数据库来给dataset,取消弹出的“配置数据适配器”界面。
打开dataset直接右键添加一个“table”
5
6
7从报表设计页的“工具栏”上拖一个“表”到报表上。
此表默认有三行,header、detail、footer,顾名思义:
header即是表头,detail就是要显示的内容,footer为表尾,可以在这里进行一些统计信息。
并且对表格进行相应的格式设计,加上表格边宽,字体居中等。
把相应的数据字段绑定上去,直接把刚才建的dataset的字段拖进去,在序号列加入报表的一个函数“=RowNumber(Nothing)”,RDLC中有许多函数可以用,右击某个单元格“属性”,在“value”中点“fx”会出现函数对话框。
再加入统计行,打开报表,在footer行收入那列中键入“=Sum(Fields!
income.Value)”即求和。
再加入分组统计,点击表格,在左侧上右键“inertgroup”,插入一个分组,如下设置:
8
9
10最后,报表的设计如下图:
11
12
13随便建一个Fomr窗体,从工具栏上拖入“ReportViewer”控件,点击该控件右上方三角,选择刚刚建立的那张报表。
14
15
接着我们手动在后台写上数据绑定的代码,如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingMicrosoft.Reporting.WinForms;
namespaceReportView
{
publicpartialclassFrmReportView:
Form
{
publicFrmReportView()
{
InitializeComponent();
}
privatevoidFrmReportView_Load(objectsender,EventArgse)
{
DataTabledt=GetData();
//DataSetFirst_DataTableFirst必须与RDLC报表中为表格配置的数据源名称相同
ReportDataSourcerds=newReportDataSource("DataSetFirst_DataTableFirst",dt);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
privateDataTableGetData()
{
DataTabledt=newDataTable("dataname");
dt.Columns.Add(newDataColumn("name",typeof(string)));
dt.Columns.Add(newDataColumn("income",typeof(decimal)));
dt.Columns.Add(newDataColumn("dept",typeof(string)));
DataRowdr=dt.NewRow();
dr["name"]="张三";
dr["income"]=3300.00m;
dr["dept"]="人事";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["name"]="李四";
dr["income"]=3500.00m;
dr["dept"]="后勤";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["name"]="XJ";
dr["income"]=7500.00m;
dr["dept"]="技术";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["name"]="CSC";
dr["income"]=8500.00m;
dr["dept"]="技术";
dt.Rows.Add(dr);
returndt;
}
}
}
16
17现在直接运行能看见如下效果:
18