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