ReportViewer下的RDLC(一)

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

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

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

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

新人嘛,这些全归我了.

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

于是,琢磨着偷懒.

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

嘿嘿,你懂的.

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

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

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

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

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


 

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

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

rvDoc.LocalReport.ReportEmbeddedResource = string.Format("项目名称.Report.{0}.rdlc", _reportname);
//这句必须加上,作用是刷新要加载的报表设置,要不然,如果两张报表的页边距不同,会出现错乱的
rvDoc.ResetPageSettings();
//显示报表
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变量
这样就太方便维护了,修改一个类,总是要比那个报表参数方便.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值