您的位置:首页 > 其它

ReportViewer和 rdlc报表使用小记

2012-12-22 19:23 495 查看
最近使用rdlc报表,由于之前没用过,所以遇到了不少小坎坷,固特别记录下以方便日后自己回顾和后来人。

刚开始用的时候觉得这个东西特别扭,后来发现琢磨一些时间后发现它其实挺不错的,支持的表格形式也很多,不过我只用过表和拆线表,下面会介绍一下这两个表的基本用法,如有不是之处,还请赐教。

一、简介

ReportViewer和 rdlcr报表结合使用大致方式如下:

1、在窗体中拖放一个ReportViewer控件。

2、在程序中添加一个rdlc报表。

3、为报表添加报表项并绑定数据源。

4、使用ReportViewer加载rdlc报表添加数据,设置显示格式。

前两个没什么好说的。第4步也比较容易,网上有一些介绍。第3步是最不好做的(至少笔者在初次接触时候受挫最多是在这一步上)。所以下面从第三步开始介绍。

二、详细介绍

1、为报表添加报表项之表格

(1)新建报表之后应该是如下的样子

View Code

private void Form1_Load(object sender, EventArgs e)
{
this.rptTestTable.RefreshReport();

////////////////////////////
//声明一个数据集合用以定义报表数据源
//报表支持的数据集合应该有很多种,不这笔者只用过ArrayList
System.Collections.ArrayList listTable = new System.Collections.ArrayList();
//这里选择为list添加一些数据
Random random = new Random();
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
DataModel model = new DataModel();
model.ID = (i + 1).ToString();
model.DataValue = random.Next(1, 200).ToString();
model.Time = DateTime.Now.AddHours(j).ToShortTimeString();
listTable.Add(model);
}
}

//下面是重点部分:绑定表数据
//这下这个的命名空间Microsoft.Reporting.WinForms.
//定义数据源,这里用到前说的数据集名字“dsTest”,这个名字比须和报表时添加的一样
ReportDataSource sourceTable = new ReportDataSource("dsTest", listTable);
this.rptTestTable.Clear();                                                           //清空ReportView的
this.rptTestTable.LocalReport.ReportPath = @"..\..\rptTestTable.rdlc";               //设置报表路径
this.rptTestTable.LocalReport.DataSources.Add(sourceTable);                          //添加数据源
this.rptTestTable.SetDisplayMode(DisplayMode.PrintLayout);                           //设置显示方式
this.rptTestTable.ZoomMode = ZoomMode.PageWidth;                                     //设置报表的绽放方式
this.rptTestTable.RefreshReport();                                                   //刷新报表
//至此运行程序就可以看到结果了

//下面绑定图表数据和中上是基本一样
ReportDataSource sourceCurve = new ReportDataSource("dsCurve", listTable);
this.rptTestCurve.Clear();
this.rptTestCurve.LocalReport.ReportPath = @"..\..\rptTestCurve.rdlc";
this.rptTestCurve.LocalReport.DataSources.Add(sourceCurve);
this.rptTestCurve.SetDisplayMode(DisplayMode.PrintLayout);
this.rptTestCurve.ZoomMode = ZoomMode.PageWidth;
this.rptTestCurve.RefreshReport();
//至此运行程序就可以看到结果了
}


4、结果,如下



到此,整个报表完成。

虽然是完成了,但是上面的报表可以大家会发现一些问题。比如表中的数据ID项有重复的,但在实际应用中这样的数据是不友好的,至于要怎样完善报表请看下回。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: