我正在尝试设置一个网页,用户可以在其中选择要运行的 .rdl 文件,它将打开一个报表查看器控件 (ASPX),加载报表定义文件,运行它并显示报表。

到目前为止,我发现“本地”报告只能接受来自代码的数据源(因此您必须手动执行数据库代码,这会很痛苦,因为报告之间的数据源可能差异很大),而“远程” "报告需要 SSRS 服务器,这是我无法设置的。

令我困惑的是,Report Builder 3 能够运行其中嵌入数据源的 .rdl 文件,那么为什么 Report Viewer 不能控制呢?有什么方法可以让 Report Viewer 控件像 Report Builder 3 一样运行并且让它运行 .rdl 文件?

最佳答案

报告查看器可以运行 RDL 文件,但它们首先需要托管/发布在某个地方,然后报告查看器处于远程模式。 ReportView 有不同的模式可以运行,其中之一基本上只是与 SSRS 服务器交谈并说:“你在那里得到了什么?”。关于何时使用本地报告或托管报告以及其中一个相对于另一个的优点/缺点有很多争论。如果需要考虑成本并相应地调整防火墙,您可以只开发一个带有“高级选项”的常规 SSRS 服务器,以将 SSRS 实例放在一个盒子上。如果这是一个策略设置,我无能为力。

老实说,如果您想要对 Entity Framework 或 WCF 服务之类的东西进行更多的耦合控制,并且想要在将数据放入报告之前对其进行处理,我会去 RDLC。如果你想创建一个包含大型数据集的报告,并为用户提供很多选项来改变报告布局和参数值,我会去 rdl 但知道你需要设置一个 SSRS 实例。尝试在没有服务器的情况下设置 RDL 报告然后运行它们是一种巨大的痛苦,它不会让您感到非常痛苦,但会感到心痛。如果这是您想要的参数,您可以创建自己的参数,然后在数据进入 RDLC 的数据源之前对其进行按摩,然后将 RDLC 呈现给最终用户。此方法涉及阅读有关报告语言的更多 MS 白皮书并了解如何在代码隐藏中实现 RDLC 对象。

更多关于 RDL 与 RDLC 的永恒争论在这里:When to use RDLC over RDL reports?

关于c# - 如何在没有 SSRS 服务器的情况下使用报表查看器控件执行 .rdl 报表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17621346/

10-16 08:55