ActiveReports提供了WinForms/ASP.NET/WPF/Silverlight平台中使用的报表查看器控件,这些控件都内置了报表参数面板,用户可以通过参数面板来过滤报表数据。不过我们也可以通过代码给参数赋值,以实现更多自定义的功能,本文将演示如何通过代码为页面报表中的多值参数传递参数值。
以下演示的功能是产品分类列表清单实现方法,在同一个报表可以显示一个或多个分类的产品信息,用户就可以为类别参数指定一个或多个值。
第一步:在VS中创建一个WinForms应用程序,并添加一个页面报表 PageReport1.rdlx
第二步:打开报表设计界面,在报表资源管理器的参数节点中,添加一个名为 Categories 的参数,详细设置如下图:
第三步:设置报表数据源
在报表资源管理器中添加数据源和数据集,并在数据集中添加一个参数,如下图
在数据集查询中写入以下查询语句,注意where条件中的 in 操作符的值是通过参数来指定的,我们使用的是参数占位符 ?
select * from 产品 where 类别ID in (?)
第四步:在应用程序中加载报表,并为参数设置参数值,代码如下:
private void 页面报表ToolStripMenuItem_Click(object sender, EventArgs e)
{
GrapeCity.ActiveReports.PageReport pagereport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport1.rdlx"));
// 设置参数值,因为该参数允许多值,所以可以调用多次Add添加多个参数值
pagereport.Report.ReportParameters[0].DefaultValue.Values.Clear();
pagereport.Report.ReportParameters[0].DefaultValue.Values.Add("1");
pagereport.Report.ReportParameters[0].DefaultValue.Values.Add("2");
pagereport.Report.ReportParameters[0].DefaultValue.Values.Add("3");
viewer1.LoadDocument(pagereport.Document);
}
运行截图:
源码下载: