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

    因为水晶报表授权价格的问题,打算在新的项目中使用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

  
       validate="false" />

  
   
    
    


   
    
   

  

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文件中的注册说明

  
   
    
   

  

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

5.常见错误
报表查看器 Web 控件 HTTP 处理程序尚未在应用程序的 web.config 文件中注册。请将 9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 添加到 web.config 文件的 system.web/httpHandlers 部分。 
出现这个错误的原因是只要在VS2005中对插入了报表的aspx文件进行了编辑,VS就会自动将刚才我们改过的版本号改回8.0.0.0,再改回来就好了,不过这样改来改去也麻烦,最好的方法是使用在3步中提到的方法,对控件进行统一注册。


原帖地址:http://hi.baidu.com/sl198012/blog/item/0393e913f82005045baf53cb.html

你可能感兴趣的:(在vs2005中的ReportViewer(RDLC报表)中使用直接打印功能,在vs2005使用ReportViewer2008[转])