实现动态展现报表:2种开发思路

   实现动态展现报表大致有2种开发思路,一是,先使用xmlTexWriter类生成报表文件(.rdl),然后在部署到服务器上,再通过控件展现。二是,通过xmlSerializer类直接从服务器上反序列话读取报表,修改后以编程方式更新报表定义,再序列话到服务器上保存报表,最后通过控件展现。前者的难点在于如何将生成的报表通过编程方式部署到服务器上,且跟后者相比,前者每此修改都要全部生成一遍报表文件,而后者只需修改需要变动的项目,很明显后者的效率比前者高。而后者的难点在于如何从定义报表文件的代码中找出需要更改的项目并更改它。

    如果对报表进行详细设计,如添加数据源,参数,数据集,表,图片,仪表,图片,文本框,以及各对象的大小位置,甚至一些个性化的,如颜色,字体,图表样式设置。如果按照方式1直接读XML,改XML,必须找到对应的节点一一修改,可想而知工作量和难度有多大。如果按照方式2,从定义报表文件的海量代码中,找出需要更改的项目难度和工作量也是很大的,不过后来找到了一个快速的方法,虽然不是SDK,但是应该算是最有效,最直接的办法,就是把微软自己的Parser拿过来Parse报表,用对象的方式修改,然后再保存。

1、找到你的Report Server 目录,一般是“C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin”,下面有一个Assembly,名字叫“Microsoft.ReportingServices.Designer.Controls.dll”,这就是我们要用的Parser。
2、建一个Project,把这个Assembly加为引用,在程序中加
using Microsoft.ReportingServices.RdlObjectModel

类详细信息请参考:http://technet.microsoft.com/zh-cn/library/microsoft.reportingservices.rdlobjectmodel.aspx

 

转载:http://www.powerbibbs.com/thread-37-1-1.html

原文地址:https://www.cnblogs.com/emmy/p/1969653.html