报告来自VS 2008报告控件中的SQL报告服务的查看器

时间:2010-01-08 19:21:35

标签: asp.net visual-studio-2008 reporting-services

在VS 2008报告控件中报告来自SQL报告服务的查看器 如果我在VS 2008中创建新报告,则它们具有.rdlc扩展名并且可以正常工作。

我有一些报告,我在SQL报告服务中使用。扩展程序是.rdl,并希望让它们与VS 2008一起使用。

我将rdl文件和.rdl.data文件复制到VS 2008(SP1)项目但是当我在控件中选择报告时它没有看到该文件(我假设它正在寻找.rdlc文件)

我尝试将文件重命名为.rdlc并加载文件并获得

  

报告定义无效   目标命名空间   'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition'   无法升级的。

我明白这一点 http://social.msdn.microsoft.com/Forums/en-SG/vsreportcontrols/thread/65cefd7d-00d8-4be6-a53a-7e34dfd7eb2b

我在这看到 http://www.gotreportviewer.com/ 它说 “RDL文件与ReportViewer控件运行时完全兼容。但是,RDL文件不包含ReportViewer控件的设计时间依赖于自动生成数据绑定代码的一些信息。通过手动绑定数据,可以使用RDL文件在ReportViewer控件中。“

但是如何手动绑定数据的链接被破坏了。

有关如何手动重新绑定数据的任何想法?或者更好的方法是让这些报告与2008控件一起使用?

2 个答案:

答案 0 :(得分:1)

很遗憾,SSRS 2008中的服务器版本* .rdl 与其本地对应的* .rdlc文件兼容。

基本上,你所能做的只是

  • 直接在服务器上使用.RDL(使用ReportViewer控件中的“远程呈现”报告)

  • 基本上从头开始将整个报告重新创建为本地报告

令人难以置信 - 但不幸的是,这是事实.....我们希望借助.NET 4,Visual Studio 2010它会更好。

答案 1 :(得分:1)

如果你不需要像深钻这样的高级功能,并且不能使用VS2010,你可以做这个黑客攻击(我这样做):

  • 从VS2010安装新的reportviewer.exe(我想是beta2或更高版本);
  • 将ReportViewer 10.0版的Common / WebForms程序集添加到引用;
  • 手动解析RDL XML结构以获取数据源和/或查询SQL(非常简单);
  • 使用它来填充LocalReport.DataSource;
  • 使用LocalReport.Render(“PDF”)获取PDF输出(用于生成PDF响应的ActionResult代码很容易找到);
  • 在页面上放置一个“查看”按钮和iframe;
  • “查看”按钮(通过JavaScript)将iframe src属性分配给返回上述PDF内容的网址 - 它将在iframe内提供报告的精美PDF预览;
  • 或者,可以使用jQuery Media插件来呈现具有相同结果的PDF对象标签;
  • 另外我解析RDL XML参数并在页面上显示它们并将它们传递给“生成报告”网址 - 我为参数获得了自己不错的UI控件作为好处;
  • 另外我有自己的“导出”按钮,调用LocalReport.Render(格式)并提供正确MIME类型的输出(即Excel,Word,PDF和我的手动CSV) - 导出在新版本的报告查看器。

上面的列表可能看起来很可怕但是我花了两天时间来破解ASP.NET MVC中的完整解决方案,它只有大约300行代码,包括我自己的CSV代。

一旦获得DataTable / DataSet(来自XML查询),绑定数据的代码就非常简单:

        var reportDataSource = new ReportDataSource();
        reportDataSource.Name = name;
        reportDataSource.Value = ds.Tables[0];
        localreport.DataSources.Add(reportDataSource);