如何过滤 RDLC 报告中的数据?

我是 Visual Studio 2010 中 RDLC 报告的新手。
我在一个网站上工作,在这个网站上我使用了 VS2010 的报告功能。我使用 ReportViewer 来显示 Report1.rdlc 。它完美地展示了它。现在我的要求是在运行时过滤报表中的数据。我经历了 this 问题,但无法理解它的答案。
因为 Report1.rdlc 在后面的代码中不可用。

现在,如何在运行时过滤报表数据?

stack overflow How to filter data in RDLC report?
原文答案

答案:

作者头像

您如何从服务器等获取数据。您是否绑定到数据表结果?如果是这样,您可以让您的查询在提取数据开始时应用过滤器,这样您就不必在实际报告中做任何特别的事情。

根据您的反馈,如果您正在获取 DataTable,那么应用过滤器应该很容易,例如

DataTable oDT = YourSQLCommandToGetData();
oDT.DefaultView.RowFilter = "SomeColumn = x and OtherColumn = y";

然后运行您的报告。如果您想将其提升到另一个级别并确保您没有任何不需要的记录,您甚至可以执行类似的操作

DataTable oNewFilteredResult = oDT.DefaultView.ToTable();

然后,您可以分配 NEW 表来调用 RDLC。

作者头像

当然,您将数据集分配给 rdlc 报告,并且在您的报告查看器的页面中,您将使用封装查询的对象数据源(以及因此带有数据表的 XSD 数据集)。

该查询自然有一个 where 子句,您可以在其中插入参数以过滤数据,例如:

WHERE (Table.Field = @Param OR @Param = A_Default_Value)

现在在调用报表(下拉列表、文本框等)之前将您喜欢的控件添加到页面中,这些控件过滤对象数据源,该数据源映射到 rdlc 报表中的数据集,因此,报表将在点击某个按钮时被过滤,例如显示报表,刷新对象数据源(数据绑定它们)并在报表查看器中重新显示报表。

您可以考虑将过滤控件的值分配给 rdlc 中的参数,以便您可以在生成报告时在其标题中显示报告的参数:

Parameters!ParameterName.Value

希望对您有所帮助。