ActiveReports提供了WinForms/ASP.NET/WPF/Silverlight平台中使用的报表查看器控件,这些控件都内置了报表参数面板,用户可以通过参数面板来过滤报表数据。不过我们也可以通过代码给参数赋值,以实现更多自定义的功能,本文将演示如何通过代码为页面报表中的多值参数传递参数值。

以下演示的功能是产品分类列表清单实现方法,在同一个报表可以显示一个或多个分类的产品信息,用户就可以为类别参数指定一个或多个值。

第一步:在VS中创建一个WinForms应用程序,并添加一个页面报表 PageReport1.rdlx

第二步:打开报表设计界面,在报表资源管理器的参数节点中,添加一个名为 Categories 的参数,详细设置如下图:

1209

第三步:设置报表数据源

在报表资源管理器中添加数据源和数据集,并在数据集中添加一个参数,如下图

image

在数据集查询中写入以下查询语句,注意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);
    }

运行截图:

image

源码下载: