我正在开发一个包含 SSRS 2008 报告的 ASP.NET MVC 2/.NET 3.5 项目。迁移到 VS 2010 RC 后,新的 Web 表单报表查看器给我带来了很多麻烦,我想再次使用 VS 2008 中的旧报表查看器。现在我只是想知道什么是最简单的方法。
报表查看器嵌入在 Webforms ASPX 文件中,该文件由 MVC View 加载到 IFrame 中。报告参数当前存储为 session 变量,出于安全原因,我不希望为 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 上,但尚未找到答案。
最佳答案
根据您遇到的问题,您有多种选择。如果这些建议之一不适合您,请更详细地描述您在使用控件时遇到的问题。例如,您是否遇到了设计器中的控件问题、Microsoft 更改了其功能或 API,或者它在运行时行为异常?
- 如果问题出在 API 或报表查看器的运行时行为上,并且如果您同时安装了 VS 2008 和 VS 2010,则可以非常轻松地删除对 Microsoft 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(或者可能是补丁)中。
关于visual-studio-2008 - 如何在 VS2010 项目中使用 VS 2008 中的 SSRS ReportViewer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453426/