在代码中设置报告数据集参数

时间:2017-04-26 09:15:39

标签: c# reporting-services reportviewer

我在ServerReport页面的ReportViewer控件中以ASPX的形式运行了大量报告。

每个报告使用相同的3个共享数据集。每个数据集至少有一个参数。

我需要将值(在运行时)传递给每个数据集的参数,但无法理解如何执行此操作。

我尝试使用ReportViewer1.ServerReport.GetDataSources(),但它说谎并说当我知道有一些数据集时没有...

我知道我可以为每个报告添加一个隐藏的参数,但这意味着要修改几十个报告,所有这些报告都以完全的方式完全相同,这让我觉得打破 DRY 原则......

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

以下是我发现的几个选项。

选项1:按照建议将参数添加到报告中。我认为这不违反任何原则,因为报告是封装的单位,而且您设计的参数可以是参数(或不是)。您作为C#报表的调用者不需要了解幕后的数据集,因为它是您与之交互的报表。

或者,您需要找到报告不知道数据集在运行时参数化的方式,所以......

选项2:创建一个存储过程,该过程接受参数,执行数据集的操作,并将结果放入表中。在调用任何报告之前以编程方式调用此方法。然后,报告数据集可以从结果表中获取数据。

选项3:在运行时将运行时参数弹出到临时表中,这样数据集就可以从数据库中自行获取,而不需要成为数据集的参数。

选项4:探索caching Shared Datasets。 听起来这可能是一个死路一条,但你有可能找到一种方法让所有报告都使用新近缓存的数据版本。