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

标签 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 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 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 上,但尚未找到答案。

最佳答案

根据您遇到的问题,您有多种选择。如果这些建议之一不适合您,请更详细地描述您在使用控件时遇到的问题。例如,您是否遇到了设计器中的控件问题、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/

相关文章:

.net - 多线程单元测试

C# 并从 Excel 文件读取值

sql-server-2005 - 在 SSRS 2005 中存储凭据

c# - 创建 winforms 帮助文件

visual-studio-2008 - 是否可以通过脚本自动生成我的 Linq2Sql DBML?

c++ - OpenCV 中的嘈杂色调

c++ - 第一次异常发生在 ... : Access violation reading location . .. 使用 Visual Studio 2010 进行调试时

c# - 始终在 Windows 应用程序的数据 GridView 中显示滚动条 - C#

c# - SSRS 最后执行数据集

reporting-services - 为 RDLC 中的子报表页面自定义主报表的页脚内容