关于Report.rdlc的使用

来源:互联网 发布:室内设计师证书知乎 编辑:程序博客网 时间:2024/05/01 17:47

最近在数据展示上用到报表,很多情况下我们都是动态生成数据,再将数据绑定到报表上。

下面是我的个人总结:

1.首先我使用的是普通的报表,而不是水晶报表。既使用的是rdlc类型的报表。

2.要将报表展示出来当然就离不开ReportViewer.在开发中经常会多个rdlc共用一个窗体中的 ReportViewer来将数据展示。而不同的rdlc的数据及字段都是各不相同的。由于是动态生成的。我们无法 直接从数据库表中找到对应的表,因而在设计rdlc的时候我们通常采用两种方式。一是在数据库中建立一 个临时表,表所对应的字段就是我们的动态生成的数据中将包含的字段,注意这时表的字段一定要与动态 生成的数据中的字段一至,否则在编译的时候就会出错。二是直接通过添加数据集来实现,在项目解决方 案中添加新项:数据集(DataSet),再给数据集添加表,给表添加列,这时候也要保证列名与动态生成的 数据的列名字段一至,采用这种方式我们可以将所有报表中将要动态生成的数据中的字段都添加过来。这 样只需一个数据集一个表就可以实现,从而不必要在数据库中创建临时表。虽然数据库中的临时表我们会 删除。有了数据源我们在设计报表的时候就可以直接从数据源中将想要的列直接拉到报表设计器中既可。 这样动态生成的数据对应的字段值将绑定到此处。这时候我们会看到类似Fields! 字段1.Value的表达式 。当然我们也可以在此基础上对报表进行更进一步的处理。比方设置表头表尾,并给出一些求和的值。

3.报表设计好了,下一步就是给ReportViewer绑定这张报表了。由于我的ReportView在每次用于选择不同 的分类时绑定不同的rdlc,因而我们可以在代码中将要绑定的报表通过参数传入,再过 rptViewer.LocalReport.ReportEmbeddedResource = "";或rptViewer.LocalReport.ReportPath="" 为 ReportViewer提供报表数据。下面就是为报表提供报表数据源。这个就是我们动态通过查询或执行存储过 程或相应的处理方法得到的DataTable。例如:ReportDataSource rds = new ReportDataSource ();

rds.Name = "dsProduct_dtProductList";

rds.Value = dsReport.Tables [0];

rptViewer.LocalReport.DataSources.Add(rds);

这里的dsReport.Talbes[0]就是得到的报表数据源 。而要注意的是rds.Name。这个与我们前面定义的数据集名称和数据表名称是一至的。写法上是在数据集 与表之间用'_'连接。如果不清楚写什么,还有一种方法就是我们右键我们的一个设计好的rdlc,从打开 方式里选择"XML编辑器",这个时候我们在XML文件里也可以看到这个名称。通过以XML编辑器的方式打开 rdlc有时候也很有用处。有时候我们可以通过直接对这个XML文件进行修改既可实现不同DataSet下的报表 设计,可以了解下这些XML文件。

原创粉丝点击