Lenka.Guo 发表于 2016-3-24 12:09:46

Winform实现带参数报表钻取——子报表为动态数据源

本帖最后由 Lenka.Guo 于 2016-3-24 12:11 编辑

源码下载:


1. 功能介绍
报表钻取是本身可以在报表设计时通过拖拽和属性设置,不需要编写一行代码,就可以轻松实现。然而这些功能前提是主报表和子报表都是设计时数据源。
当子报表是运行时数据源要如何实现?

主要功能点:

[*]报表钻取
[*]子报表设计时数据源
[*]带参数的报表钻取
[*]WinForm
[*]在子窗口中弹出子报表

2.开发环境
Visual Studio 2012 +ActiveReports 10SP1+WinForm(如果不是此版本,可通过VS 中的工具-》转换为ActiveReports10 一键转化)

3.实现步骤

1. 创建主报表 RdlReport1.rdlx;
2.选中单元格;在属性窗口中,点击“属性对话框”,设置“导航”属性;
3.选择“跳转到URL”,设置跳转时传递的值字段(关键步骤,与常规报表设计不同,选择:跳转到URL, 在值中输入参数值)

http://gcdn.gcpowertools.com.cn/data/attachment/forum/201603/24/120701zk9099ygyx04j3xk.jpg

    4. 在Form1 中添加Viewer,实现Viewer的HyperLink 事件
(选中Viewer,在属性窗口中,点击事件按钮),在该方法中添加以下代码

private void viewer1_HyperLink(object sender, GrapeCity.ActiveReports.Viewer.Win.HyperLinkEventArgs e)
      {
            string file_name = @"..\..\RdlReport2.rdlx";
            GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
            GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
            pageDocument.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(getDataSource);
            Class1 cs = new Class1();
            cs.temp1 = e.HyperLink.ToString();
            rpt.Report.ReportParameters.DefaultValue.Values.Add(cs.temp1);
            Form2 fm = new Form2();         
         
            fm.viewer1.LoadDocument(pageDocument);
            fm.Show();
      }






页: [1]
查看完整版本: Winform实现带参数报表钻取——子报表为动态数据源