在进行报表设计的时候有时需要通过后台代码端给参数赋值,有时也需要通过后台获取报表参数的值,然后进行动态数据的筛选。

下面我们首先来说说如何后台给参数赋值:

1、 首先新建一张RDL报表,然后添加两个参数:

  • 参数1:CategoryID
  • 参数2:CategoryName

添加参数

2、 后台代码端给报表参数赋值:

GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(newSystem.IO.FileInfo(@"**.rdlx"));
rpt.Report.ReportParameters[0].DefaultValue.Values.Add("1");

ReportParameters[0]代表第一个参数 CategoryID
ReportParameters[1]代表第二个参数 CategoryName

这样就直接把后台参数传递给报表了。

如何在后台获取参数的值:

1、 首先给报表添加两个参数:

  • 参数1:CategoryID
  • 参数2:CategoryName

添加参数

2、 后台获取传递的参数进行参数的筛选。

这个主要是进行动态数据源绑定,并且用到了报表钻取功能的时候,经常需要后台主表传递的筛选参数,进行数据的筛选。

该操作的注意点:

  • 首先主表进行导航的时候,主表传递给子表的参数需要和子表的参数命名一致。

参数筛选

  • 子表的参数设置,命名需要跟主表传递的值得命名一致,这样才能进行信息一致的匹配。

3、 后台参数的获取

报表的参数后台的获取需要在 LocateDataSourceEventArgs 这个函数下才可以获取报表参数的当前值。这一点必须谨记。

后台获取参数的关键代码:args.Report.Parameters[0].CurrentValue.ToString();

Parameters[0]代表参数一

Parameters[1]代表参数二

4、 具体代码:

private void locatedate(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
        {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
           string a = args.Report.Parameters[0].CurrentValue.ToString();
                  args.Data = returndata();
                }               
            }
        }