我是 Visual Studio 2010 中 RDLC 报告的新手。
我正在开发一个网站,在这个网站中我使用了VS2010的报告功能。我用
ReportViewer
来显示 Report1.rdlc
。它完美地展示了这一点。现在我的要求是在运行时过滤报告中的数据。我经历了this问题,但无法理解它的答案。Report1.rdlc
在代码隐藏中不可用。现在,如何在运行时过滤报表数据?
当然,您将数据集分配给 rdlc 报告,并且在报告查看器的页面中,您将使用对象数据源(因此具有数据表的 XSD 数据集),它封装了查询。
查询自然有一个 where 子句,您可以在其中插入参数来过滤数据,例如:
WHERE (Table.Field = @Param OR @Param = A_Default_Value)
现在,在调用报表之前将您喜欢的控件添加到页面中(下拉列表、文本框等),这些控件会过滤对象数据源,该数据源映射到 rdlc 报表中的数据集,从而生成报表单击某个按钮后将被过滤,例如显示报表,刷新对象数据源(数据绑定它们)并在报表查看器中重新显示报表。
您可以考虑将过滤控件的值分配给rdlc中的参数,以便您可以在生成报告时在其标题中显示报告的参数:
Parameters!ParameterName.Value
希望对您有帮助。
您如何从服务器等获取数据。您是否绑定到数据表结果?如果是这样,您可以让查询在开始提取数据时应用过滤器,这样您就不必在实际报告中执行任何特殊操作。
根据您的反馈,如果您正在获取数据表,那么应用过滤器应该很容易
DataTable oDT = YourSQLCommandToGetData();
oDT.DefaultView.RowFilter = "SomeColumn = x and OtherColumn = y";
然后运行您的报告。如果您想将其提升到另一个水平并确保您没有任何不需要的记录,您甚至可以执行类似的操作
DataTable oNewFilteredResult = oDT.DefaultView.ToTable();
然后,您可以分配NEW表来调用RDLC。