最近winform上使用ReportViewer做报表,因为之前没弄过,所以遇到了很多问题,现在总结一下。
一、运行环境
.net环境:4.0
开发工具:vs2010
二、开发步骤
第一步,在winform窗体上添加ReportViewer控件作为呈现报表的容器,重新命名为reportViewerTest;
第二步,利用向导添加MyTestReport.rdlc报表文件;
第三步,利用向导添加数据集Test.xsd,数据集用来存放报表需要呈现的数据源的格式,在数据集中添加一个用来测试的Student表;
第四步,设计MyTestReport报表文件,这里方便测试,只添加一个列表来显示student信息。在添加列表的时候需要绑定在上一步添加的student表,报表绑定的数据源信息可以在【报表数据】里查看。【报表数据】可在【视图】中打开。
第五步,在winform页面中为reportViewerTest的属性中指定该报表,或者动态为reportViewerTest指定报表文件,如
reportViewerTest.LocalReport.ReportEmbeddedResource="报表文件";// 包含命名空间和报表文件名称 如 Test.ReportManage.MyTestReport.rdlc
动态创建一个datatable,表结构和数据源文件中的student表相同,如
DataTable studentDt=new DataTable("Student");
studentDt.Columns.Add("ID");
studentDt.Columns.Add("Name");
studentDt.Columns.Add("Age");
studentDt.Columns.Add("Sex");
为studentDt赋值:
studentDt.Rows.Add("10001", "Jack", 12, "男");
studentDt.Rows.Add("10002", "Lucy", 11, "女");
studentDt.Rows.Add("10003", "Jason", 15, "男");
studentDt.Rows.Add("10004", "Lili", 13, "女");
将数据表加入报表:
reportViewerTest.LocalReport.DataSources.Add(new ReportDataSource("Student",studentDt));//注:这里数据源名称要与上面再报表中定义的数据源名称一致。
第六步,刷新报表控件。
reportViewerTest.RefreshReport();
最后,如果报表中有跳转链接,既报表间跳转,需要实现报表控件的Drillthrough事件,报表的相关初始化工作在该事件的方法中实现。