当前位置:首页 > 使用ActiveReport for.net 进行报表开发
使 用ActiveReport for .net 进行报表开发(一)--开始
ActiveReport 是.net下的一个出色的报表开发程 序,虽然和水晶报表相比,名气不那么大,甚至有很多人不知道它的存在,但是并不妨碍它在.net报表开发中的出色表现,本文 将一步一步地介绍如何使用它和VS2005开发.net报表。
1. 安装:
你可以从Data Dynamics的网站上下载最新的ActiveReport for .net 2 ,你可以免费使用,但是在 生成的报表最下边有水印,不过不影响报表的整体美观。下载后直接安装就可以了。安装完后会看到开始-程序菜单里的DataDynamics的目录,里面包括了,帮 助,例子程序等。
2. 第一个Winform报表程序。
在安装完成后,启动VS2005,会看到启动界面上有ActiveReport的图标,进入后新建一个工 程,并且给工程添加新文件,在文件类型中就可以看到ActiveReport文件的图标。给报表文件命名 为ActiveReport1,确定后会看到项目中有一 个ActiveReport1.rpx文件,这个就是报表文件 了。
打开文件,就是报表的设计界 面,在这里可以看到三部分,PageHeader(表头),Detail(明细),PageFooter(表尾)。打开工具箱,给Detail部分随便添加一个Label。 下面就要显示这个报表了,在Form上添加一个Viewer控件,如果工具箱里没有, 可以通过配置工具箱来找到它。Viewer添加完后,在Form中写代码:
ActiveReports1 rpt = new ActiveReports1();
rpt.Run();
this.viewer1.Document = rpt.Document;
然后F5运行,就可以看到在Viewer控件中显示报表了。
要注意的是,项目名称不要命 名为ActiveReport,否则会提示找不到ActiveReport.rpx文件。
3. 第一个web报表程序。
Web方式的报表开发方式和winform的差不多,不同的是,web方式下需要作一些配置,配 置过程不再累述,可以在帮助里搜索“Manually Configuring Web Samples”,按照里面的步骤对IIS作配置。
要注意的是,如果使用的是VS2005,那么可以不作配置,只要 在创建Web项目的时候文件位置选项设置为“文件系统”就可以直接运行了。还要注意的是,在web方式下,需要在web.config文件中添加下面这段:
type=\DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler, ActiveReports.Web, Version=4.2.1.1238, Culture=neutral, PublicKeyToken=cc4967777c49a3ff\/> type=\DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler, ActiveReports.Web, Version=4.2.1.1238, Culture=neutral, PublicKeyToken=cc4967777c49a3ff\/> 如果是VS2005,系统会自动添加。 接下来的就和winform下的差不多了,不同的是,要在解决方案中 新增一个“类库”项目,在这个项目中新建报表文件,然后在Web项目中添加对类库项目的引用,然后在页面上添加WebViewer控件,然后编写代码: this.WebViewer1.Report = new YourNamespace.ActiveReports1(); 然后运行界面,就可以看到在WebViewer中加载的报表了。 你可以通过WebViewer的ViewType属性来设置在页面上如何显 示,例如,如果选择了AcrobatReader,就会给报表生成一个PDF文档在页面上嵌入显示。 下次我们将演示如何在报表 上加载和显示数据 使 用ActiveReport for .net 进行报表开发(二)--绑定数据源 在上篇随笔中 写了一个使用ActiveReport for .net 的最简单的例子,本文将演示在ActiveReport中如何绑定数据源 1. 先建一个表chartingTable,有两个字段,OnlineUserCount,Project,通过向导生成 DataSet,并拖放生成TableAdapter。 2. 接下来在报表设计器中设计 显示格式,在PageHeader中放置两个label,分别为“项目” 和“在线人数”。再在Detail区方式两个对应的Label,分别设置DataFiled为Project和OnlineUserCount,在运行的时候将会看到这 两个Label显示的是对应字段中的内容。 3. 可以给报表指定DataSet或DataView作为数据源,下面演示给报 表设置数据源: 使用DataSet: this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable); rpt.DataSource = this.dataSet1; rpt.DataMember = this.dataSet1.ChartingTable.TableName; rpt.Run(); this.viewer1.Document = rpt.Document; 使用DataView: this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable); DataView dv = this.dataSet1.ChartingTable.DefaultView; ; rpt.DataSource = dv; dv.RowFilter = \; rpt.Run(); this.viewer1.Document = rpt.Document; 4. 我们还可以通过报表设计器来给报表指定数据源。 在报表设计器的Detail部分的头部,有一个数据库 一样的小图标,点击它后会出现向导,按照向导一步步连接数据库,并定义查询就可以了。 上面演示的是使用数据集作为 数据源进行绑定,但是实际项目中经常会用到使用对象集合作为数据源显示,下一次我们将演示如何在报表上显示一个对象集合中的数据。 使 用ActiveReport for .net 进行报表开发(三)--显示对象集合中的数据 上篇随笔演示了在ActiveReport for .net中如何绑定数据源,例如DataSet,DataView。本文将通过一些示例代码 继续演示如何绑定对象集合以及如何从对象集合或列表中提取数据。 1. 直接绑定: 我们可以自己定义一个Collection,从IList继承,并使其中的每个对象 都是一个实体,例如: Customer和CustomerCollection。然后给ActiveReport报表的DataSource直接赋值为CustomerCollection的实例就可以了。这种绑定 方法在ActiveReport for .net自带的例子里有完整的演示。 2. 手工加载显示对象的数据: 在这里要用到两个事件:DataInitialize和FetchData。 DataInitialize用来定义字段列表,获取数据等工作,FetchData用来指定每个字段的值。 我们简单定义一个Customer类 public class Customer { public int ID; public string Name; public string Address; } 再给报表定义一个Customer数组,用来保存要显示的数据,比如: public Customer[] customers; 还需要一个值来保存当前记录的索引:private int index =0; 接下来在DataInitialize中定义报表有那些字段: this.Fields.Add(\); this.Fields.Add(\); 然后在FetchData事件中添加以下代码: if (this.index >= this.customers.Length ) { eArgs.EOF = true; return; } else { eArgs.EOF = false; } this.Fields[\].Value = customers[this.index].Name; this.Fields[\].Value = customers[this.index].Address; this.index += 1; 这段代码的含义就是将Customer数组中的每个Customer实例的Name和Address属性值赋给报表的Name和Address字段。 代码中的第一个if分支是判断是否已经加载到了最后一条数据,如果是,设置eArgs.EOF为ture,并返回,否则继续加载下 一条数据。 然后我们可以将要显示的数据放在Customers数组中,并启动显示报表: Customer[] customers = new Customer[2]; Customer c = new Customer(); c.Name = \; c.Address = \; Customer c2 = new Customer(); c2.Name = \; c2.Address = \; customers[0] = c; customers[1] = c2; rpt.customers = customers; rpt.Run(); this.viewer1.Document = rpt.Document; 通过上面的示例可以看到,第二种方式虽然比较烦琐,需要程序员自己处理很多东西,但是这样程序员拥有完全的操控能力,特别是需 要对取出的数据作很多复杂的处理时,这样的操控能力是非常重要的。 在下一篇随笔中,将展示如何使用子报表来作显示主从表。 使 用ActiveReport for .net 进行报表开发(四)—显示主从表 上篇随笔演 示了在ActiveReport for .net中如何从对象集合中提取数据。本文简单介绍如何使用子报表来显示主从表中的数 据。 1. 在需要显示主从表中的数据 时,使用子报表能够提供很大的灵活性,一般就是把主表的信 息显示在detail中,如果要每页的上方都要显示主表,就可以放在PageHeader中。再把子表的信息放在Detail中,然后把子报表中的控件 直接绑定到数据源上或者使用上篇随笔中的提到的方式从对象集合中提取数据。 2. 使用子报表: 新建报表,然后在工具箱上可以看到SubReport控件,拖放一个控件到Detail部分,用此控件来加载子报 表。 再新建一个报表,命名为SubReport1 ,接下来在主报表中写代码, 在页面设计器上选中Detail部分,在属性窗口切换到事件栏,双击Format,将会产生Detail_Format事件,下面就要在这个事件 里指定子报表控件所要加载的报表。 3. 由于Detail部分会进行重复显示的,所 以,只能指定一次报表源,在这里,我们按照下 面的例子: ActiveReport sub = null; private void Detail_Format(object sender, System.EventArgs eArgs)
共分享92篇相关文档