【问题标题】:Report viewer from SQL reporting services in VS 2008 report controlVS 2008 报表控件中来自 SQL 报表服务的报表查看器
【发布时间】:2011-01-03 01:24:27
【问题描述】:

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 控件一起使用的更好方法?

【问题讨论】:

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


    【解决方案1】:

    如果你不需要像向下钻取这样的高级功能,并且不能使用 VS2010,你可以做这个 hack(我做的):

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

    上面的列表可能看起来很吓人,但我只用了 2 天时间就破解了 ASP.NET MVC 中的完整解决方案,而且它只有大约 300 行代码,包括我自己生成的 CSV。

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

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

    【讨论】:

    • 哇,看来您已经走上了 MS 报告服务的黑暗道路。我最终只是重做了 VS 2008 中的报告,但我非常有兴趣尝试您在这里谈论的内容。
    • 是的,我在博客上写了一些关于 SSRS 和其他报告引擎如何糟糕的博客。但后来我还是决定用它——因为我喜欢这个设计器,而且渲染引擎(LocalReport)的合理部分是免费的。此外,无论如何,报表查看器在 MVC 中毫无用处,它生成的 HTML 也很糟糕。 PDF 更易于预览。当然,这意味着生成完整的报告(无分页)等,但总是要权衡取舍;在许多情况下,它仍然是一个不错的解决方案。没有人否认购买完整的报告服务并等待 VS2010(RC 现已推出);但最好有免费的替代品。
    【解决方案2】:

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

    基本上,你能做的就是

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

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

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

    【讨论】:

    • 那么在2010年,报表控件可能使用.rdl还是.rdlc?我想我需要获得测试版并尝试一下。
    • 我不知道 - 但你总是希望最好的! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多