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

amrnrhlw  于 2023-01-18  发布在  .NET
关注(0)|答案(2)|浏览(180)

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

8e2ybdfx

8e2ybdfx1#

当然,您将数据集分配给了rdlc报表,并且在reportviewer页面中,您将使用一个对象数据源(因此是一个包含数据表的XSD数据集),它封装了查询。
查询自然有一个where子句,您可以在其中插入参数来过滤数据,例如:

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

现在,在调用报表之前,将您喜欢的控件添加到页面中(下拉列表、文本框等),这些控件过滤对象数据源,对象数据源Map到rdlc报表中的数据集,因此,单击某个按钮(如Show Report)以刷新对象数据源(对其进行数据绑定)并在reportviewer中重新显示报表时,报表将被过滤。
您可以考虑将过滤控件的值分配给rdlc中的参数,以便在生成报告时可以在其标题中显示报告的参数:

Parameters!ParameterName.Value

希望对你有帮助。

xpcnnkqh

xpcnnkqh2#

您是如何从服务器等获取数据的?您是否绑定到数据表结果?如果是,您可以在提取数据时让查询应用筛选器,这样您就不必在实际报表中执行任何特殊操作。
根据您的反馈,如果要获取DataTable,则应用筛选器应该很简单,如下所示

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

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

DataTable oNewFilteredResult = oDT.DefaultView.ToTable();

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

相关问题