ReportViewer下的RDLC(一)

起因:去年7月新入职,熟悉业务先.

公司从事的每项业务,需要向政府的几个部门进行电子申报和纸面申报.

我要吐槽的是,纸面申报用的一套单据,要50张以上啊,版式还基本不同,哎,可悲在,基本要用空白表手写.

我就不明白了,都电子申报了,怎么还这么多重复的纸面申报,多不环保啊.

新人嘛,这些全归我了.

做了半年这个,大感不爽,因为做一套单据(不算电子申报录入和审查的时间)要2个多小时,而公司一般每月有30单业务.

于是,琢磨着偷懒.

既然能电子申报,而纸面申报的数据依托于电子数据,而电子数据的数据库在公司服务器上.

嘿嘿,你懂的.

最近基本完成了这个单证打印软件(性能未优化),数据库是MsSql2000,这里就不说软件设计了,只讲关于ReportViewer和RDLC.

打印预览界面如下:

我做的所有RDLC文件,生成时,是嵌入资源是,要不文件太多,简单来说,就是点击右侧的树节点,显示打印预览,点击打印按钮,打印输出.

PS:自定义批量后台打印,我打算放到下一篇.

一.加载数据源和预览报表

ReportViewer加载数据源代码如下(对应的"数据源.xsd"自己创建,我这是MsSql2000,必须手动创建;rvDoc是ReportViewer的控件名):

 1 rvDoc.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
 2 rvDoc.LocalReport.AddTrustedCodeModuleInCurrentAppDomain("Util, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
 3                 
 4 #region 报表数据源
 5 ReportDataSource 自定义的数据源变量 = new ReportDataSource("报表中加载的数据源名称", ds.Tables["TableName"]);
rvDoc.LocalReport.DataSources.Add(自定义的数据源变量);
6 //以下为N多所需的数据源 7 #endregion 8 9 //设置ReportViewer显示模式为打印预览模式,比较美观 10 rvDoc.SetDisplayMode(DisplayMode.PrintLayout); 11 //报表缩放,随页宽改变 12 rvDoc.ZoomMode = ZoomMode.PageWidth;

点击树的节点时,用以下代码加载要预览的报表:

1 rvDoc.LocalReport.ReportEmbeddedResource = string.Format("项目名称.Report.{0}.rdlc", _reportname);
2 //这句必须加上,作用是刷新要加载的报表设置,要不然,如果两张报表的页边距不同,会出现错乱的
3 rvDoc.ResetPageSettings();
4 //显示报表
5 rvDoc.RefreshReport();

二.在报表中调用方法和变量

可能很多人会问,这么多报表,加载报表参数怎么办啊,经过我的测试,报表参数实在是不好用,要写代码对应每张报表加载参数,还要去报表中手动再加载一次,也不便于维护.

所以,我换了种方法.而这种方法,也能解答有些朋友想问的,怎样在RDLC中调用类中的变量和方法.大家看下面这句"ReportViewer加载数据源"中的代码

rvDoc.LocalReport.AddTrustedCodeModuleInCurrentAppDomain("Util, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");

其中的Util是类库.

将其加载到ReportViewer中,当然,也需要在报表属性中,对所有报表进行引用程序集的设置(我用的是VS2010,没用过VS2008和VS2005).

Util这个类库中的变量和方法,我都用的静态的,因为,我不知道,怎么在报表中实例化这个类,求指教.

下面有个易报错的地方,就是要把这个Util类库生成的.dll文件,复制到路径"Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies"下,要不会找不到了.

当然,最后的成品是不需要这样的,只是开发中需要这样.

报表中的表达式这么写.

=Util.类.方法or变量

这样就太方便维护了,修改一个类,总是要比那个报表参数方便.

欢迎拍砖,素质留言,恳请指教!

 

下篇预告,自定义批量后台打印

posted @ 2012-06-14 11:05  几只蝉  阅读(3714)  评论(12编辑  收藏  举报