我正在开发一个包含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 report和using 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上,还没有找到答案。
答案 0 :(得分:4)
根据您遇到的问题,您有多种选择。如果其中一个建议不适合您,请更详细地描述您对控件的问题。例如,您是否在设计器中遇到控件问题,Microsoft更改了其功能或API,或者在运行时是否行为错误?
在每个页面上替换:
<%@ 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)