您的位置:首页 > 其它

在vs2005中的ReportViewer(RDLC报表)中使用直接打印功能,在vs2005使用ReportViewer2008

2014-10-13 11:26 531 查看



因为水晶报表授权价格的问题,打算在新的项目中使用Visual Studio 2005中自带的MicosoftReportViewer,但VS2005中的MicosoftReportViewer在浏览的时候不能直接打印,只能先导出为Excel或者PDF文件再使用Excel或PDFReader里边的打印实现打印,非常之不方便,也不知道M$怎么想的,不过在VS2008当中M$终于想通了,将MicosoftReportViewer作了一次升级,升级为9.0,新加了一个ActiveX插件,通过这个插件实现了在网页上直接打印。

如果您的项目是基于VS2005的,但又想使用VS2008当中的MicosoftReportViewer功能以实现直接打印,就需要在发布网站之前修改Web.config文件中的ReportViewer控件版本之后再发布。

那么为什么是在发布之前修改版本,然后发布完成之后又需要改回来呢?可能大家会觉得很奇怪,那是因为我经过无数的方法想直接把VS中的8.0版本控件直接替换成9.0不成功之后才不得已想到的方法,因为没有办法替换掉VS2005中的控件,所以如果我们在开发时如果web.config中的版本是9.0,那么就会有控件版本冲突错误。

具体做法请参考如下的方法:

1. 下载Microsoft Report Viewer Redistributable 2008并安装

http://www.microsoft.com/Downloads/details.aspx?displaylang=zh-cn&FamilyID=cc96c246-61e5-4d9e-bb5f-416d75a1b9ef

另外提示一下,使用这个控件不需要安装Framework 3.5,因为它实际上只是多了一个ActiveX插件,并没有使用到Framework 3.5中的任何功能。

2. 找到web.config中的如下几行,将版本号全部从8.0.0.0改为9.0.0.0

<system.web>

<httpHandlers>

<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

validate="false" />

</httpHandlers>

<compilation debug="true">

<assemblies>

<add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>

<add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>

</assemblies>

<buildProviders>

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

</buildProviders>

</compilation>

</system.web>

3. 将VS2005为每个页面添加的标记注册说明去掉

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

这里有点小问题,如果我们在asp.net中引用ReportViewer控件之前没有在Web.config中添加标记注册说明,VS会在每个放置了ReportViewer控件的aspx文件中进行控件注册,所以最好的方法是在Web.config中统一进行注册,以免每次都要去删除aspx文件中的注册说明

<pages>

<controls>

<add tagPrefix="rsweb" namespace="Microsoft.Reporting.WebForms" assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

</controls>

</pages>

4.完成所有修改之后再编译发布网站,需要注意的是一定要在发布之前修改,发布之后再修改web.config是不行的。

5.常见错误

报表查看器 Web 控件 HTTP 处理程序尚未在应用程序的 web.config 文件中注册。请将 <add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 添加到 web.config 文件的 system.web/httpHandlers 部分。

出现这个错误的原因是只要在VS2005中对插入了报表的aspx文件进行了编辑,VS就会自动将刚才我们改过的版本号改回8.0.0.0,再改回来就好了,不过这样改来改去也麻烦,最好的方法是使用在3步中提到的方法,对控件进行统一注册。

6.点击“打印”按钮时提示不能加载打印控件的错误

下载SP1版本的控件

Microsoft Report Viewer 2008 SP1 Redistributable - 简体中文

http://www.microsoft.com/downloads/details.aspx?familyid=BB196D5D-76C2-4A0E-9458-267D22B6AAC6&displaylang=zh-cn

Microsoft Report Viewer Redistributable 2008 SP1 语言包
http://www.microsoft.com/downloads/details.aspx?familyid=C1DF3B07-09D7-48CB-BB63-DF6D3C2F8141&displaylang=zh-cn

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐