ActiveReports 区域报表(Section)加载多数据源实战

基于代码的区域报表非常灵活,如,可在同一个页面实现多个数据源(本例展现的是多个DataTable)绑定,其核心思想是区域报表的detail_Format事件中赋值的。

发布于 2014/03/31 00:00

ActiveReports

    基于代码的区域报表非常灵活,如,可在同一个页面实现多个数据源(本例展现的是多个DataTable)绑定,其核心思想是区域报表的detail_Format事件中赋值的。

创建数据源DataSet(Form1.cs Line 37):

Code Snippet
  1. privateDataSet CreateDataSet()
  2.         {
  3.             DataTable table1 =newDataTable("table1");
  4.             table1.Columns.Add("name");
  5.             table1.Columns.Add("id");
  6.             table1.Rows.Add("Spread", 1);
  7.             table1.Rows.Add("ComponentOne", 2);
  8.             table1.Rows.Add("ActiveReports", 3);
  9.  
  10.  
  11.             DataTable table2 =newDataTable("table2");
  12.             table2.Columns.Add("desc");
  13.             table2.Columns.Add("id");
  14.             table2.Rows.Add("", 1);
  15.             table2.Rows.Add("", 2);
  16.             table2.Rows.Add("", 3);
  17.  
  18.             DataSet ds =newDataSet();
  19.             ds.Tables.Add(table1);
  20.             ds.Tables.Add(table2);
  21.             
  22.             return ds;
  23.         }

 

添加<基于代码的区域报表>SectionReport2DataSet.cs,双击报表设计界面,在UI放置2个label和2个TextBox分别用于呈现2个数据源的数据,如下图所示:

AR8_section1

在ReportStart事件中,通过添加代码来实现TextBox1(数据源一)的映射绑定:

Code Snippet
  1. void SectionReport2DataSet_ReportStart(object sender, EventArgs e)
  2.         {
  3.             //DataSet1
  4.             this.textBox1.DataField ="name";
  5.         }

 

其次,在detail_Format中,实现TextBox2(数据源二)的赋值--通过TextBox1的值获得对应TextBox2的值。

Code Snippet
  1. void detail_Format(object sender, EventArgs e)
  2.         {
  3.             //DataSet2textBox1
  4.             this.textBox2.Value = FindName(this.textBox1.Value);
  5.         }

 

最后,在Form中,加载区域报表:

Code Snippet
  1. privatevoid ToolStripMenuItem_Click(object sender, EventArgs e)
  2. {
  3.     SectionReport2DataSet sec =newSectionReport2DataSet();
  4.  
  5.     //DataMember
  6.     sec.DataSource = CreateDataSet();
  7.     sec.DataMember ="table1";
  8.  
  9.     this.viewer1.LoadDocument(sec);
  10. }

 

运行结果同我们预期一样:在区域报表Detail中,加载了2个不同的DataTable

AR8_section2

 

源代码:VS2013 + C#.net + AR8

 

参考阅读: ActiveReports 区域报表中的事件介绍

 

ActiveReports 报表控件| 下载试用

ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。

您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态