如何在VS2010项目中使用VS 2008中的SSRS ReportViewer?

时间:2010-03-16 10:08:11

标签: visual-studio-2008 visual-studio-2010 reporting-services assemblies

我正在开发一个包含SSRS 2008报告的ASP.NET MVC 2 / .NET 3.5项目。迁移到VS 2010 RC后,新的Web表单报表查看器遇到了很多麻烦,我想再次使用VS 2008中的旧报表查看器。现在我只是想知道最简单的方法是什么。

报表查看器嵌入在Webforms ASPX文件中,该文件由MVC视图加载到IFrame中。报告参数当前存储为会话变量,出于安全考虑,我宁愿不为HTTP POST或GET参数更改它。因此,我不能将报表查看器放在单独的应用程序中,并使用VS2008构建它。

将整个项目移回VS 2008不是一种选择。

那么,在VS 2010中使用VS 2008 ReportViewer最简单的方法是什么?有没有办法从VS 2008中获取一个程序集并在我的项目中使用它?

谢谢,

阿德里安

编辑:我使用VS2010版本的ReportViewer时遇到的问题与AJAX请求有关。例如,AsyncRendering=True fails to load the reportusing the paging controls or the reload button does not work either。导出按钮工作正常,但那是因为它与AJAX请求无关。

如果你知道如何解决这个问题,我真的更喜欢保留新的报告查看器。这只是I have previously asked about this on SO,在social.msdn.com和MS Connect上,还没有找到答案。

2 个答案:

答案 0 :(得分:4)

根据您遇到的问题,您有多种选择。如果其中一个建议不适合您,请更详细地描述您对控件的问题。例如,您是否在设计器中遇到控件问题,Microsoft更改了其功能或API,或者在运行时是否行为错误?

  • 如果问题出在API或报表查看器的运行时行为上,并且安装了VS 2008和VS 2010,则可以非常轻松地删除对Microsoft 2010的2010版本(实际版本10.0)的引用。 ReportViewer.WebForms在您的项目引用下。然后,您可以使用“添加引用”对话框从2008(实际版本9.0)中选择版本。您还需要更新使用报表查看器的每个页面,并将版本10声明替换为下面的版本9声明。

在每个页面上替换:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

使用:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

在web.config中替换:

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

使用:

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

在web.config中替换:

<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />

使用:

<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>

在web.config中替换:

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

使用:

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  • 如果只有设计人员崩溃或给您带来麻烦,您可以将2010版本的控件包装在用户控件或自定义控件中,并在页面中以这种方式使用它。您仍然没有很好的设计师经验,但如果设计师是您的问题,这可能是避免崩溃或其他问题的最佳解决方法。

  • 如果仍然无法使用此功能,您可以退回到VS2008并在自定义服务器控件中包装2008版本的报表查看器。然后,您可以在2010项目中引用新控件。再一次,你会以这种方式失去设计师的支持。

除了这些步骤之外,您还应该登录Microsoft Connect并详细报告您遇到的问题,以便他们可以修复它并将其包含在Visual Studio 2010的RTM中(或者可能是补丁)。

答案 1 :(得分:4)