ActiveReports 区域报表中的事件介绍

1、仅触发一次的事件

以下是在报表的处理过程中仅触发一次的所有事件这些事件在报表的处理周期中仅在最开始和结束前触发一次。

ReportStart

该事件在DataInitialize事件触发之前发生。使用此事件来初始化运行报表时需要的任何对象或者变量。还可以使用此事件设置子报表控件一个新的子报表实例。一旦该事件处理完成,不要动态的向报表动态地添加项目。

DataInitialize

该事件在ReportStart事件之后触发。使用它像报表的字段集合添加自定义字段。自定义字段可以被添加到一个绑定的报表(一个使用数据控件连接并获取记录的报表)或者一个非绑定态报表(一个不依赖数据控件获取记录的报表)。在绑定态报表中,首先打开数据集并添加数据集字段到自定义自段集合,然后触发DataInitialized事件,可以在其中添加新的自定义字段。DataInitialize事件也可以用来调整数据源或者建立数据库连接。

ReportEnd

该事件在报表处理完成时触发。使用该事件关闭或者释放您在非绑定模式使用的对象,或者向最终用户显示信息或者消息。

2、多次触发的事件

以下ActiveReports事件在报表的处理过程中多次触发。

FetchData

该事件在每次一个新的纪录处理完成时触发。FetchData具有一个EOF参数,该参数指示是否触发FetchData事件。该参数和RecordSet的EOF属性不同,默认值为True。当使用一个绑定态报表(使用数据控件的报表)时,EOF被报表自动设置,但是,当使用非绑定态报表时,该参数需要手动设置。

使用FetchData事件在非绑定报表中设置通过DataInitialize事件添加的自定义字段的值。或者在绑定报表中执行特殊功能,比如将两个字段结合或者执行计算。FetchData事件处理方法中不应当使用报表中的任何控件。

如果您希望在明细区域的一个控件上使用一个来自于数据集的值,请在FetchData事件中设置一个变量,然后在区域的Format事件中将值传递给控件。请注意,只有Detail_Format 事件支持这种用法。

此外,在使用数组或者集合时还可以使用FetchData事件递增计数器。

PageStart

该事件在一页呈现之前触发。使用该事件来初始化运行一个非绑定报表时,每个页面需要的任何变量。

PageEnd

该事件在一页呈现之后触发。使用该事件来更新运行一个非绑定报表时,每个页面需要的任何变量。

当绑定和非绑定数据值设置时

1. 绑定到报表的数据集在DataInitialize事件触发后填充字段集合。(在一个非绑定报表中,此时字段集合尚未设置。)

2. 触发FetchData事件,让用户有机会修改字段集合。

3. 所有绑定的字段的值传输完成。

4. 引发Format事件。

3、区域事件

在一份报表中,无论各种区域的内容如何,每个区域都有三个事件:

Format, BeforePrint 以及AfterPrint。

因为可能存在很多可能的报表设计,事件触发的顺序是动态的,以适应不同报表的需求。唯一可以保证的顺序是区域的Format事件会在BeforePrint事件之前触发。报表不应当设计的过度的依赖事件触发的顺序。

重要: 切勿在以上区域事件中引用报表的Fields集合。仅在DataInitialize 和 FetchData 事件中对Fields集合进行访问。

Format 事件

ActiveReports 会在数据绑定到区域包含的控件之后触发这个事件。但是会确保在区域呈现到页面上之前。

Format事件是唯一一个您可以在其中改变区域高度的事件。使用该区域对象以改变其中任何控件的属性,或者区域对象本身。

同样可以使用这个Format 事件来传递信息,比如说一个SQL字符串到子报表。

如果区域或者区域内部任何控件的 CanGrow 或者 CanShrink 属性设置为True ,所有的增长和收缩的操作在Format事件中完成。正因为如此,您无法在该事件中获取一个控件或者区间的高度的准确信息。

正是由于一个区域的高度信息在Format事件结束以前是不确定的。例如,明细区域的Format事件触发,但是计算结果表明,当前的明细区域过大,导致此页面容纳不下。这时就会导致当前页面的PageFooter事件和PageEnd事件触发。同时下一个页面的PageStart,其他的Header事件以及有可能存在的FetchData事件在该页的明细区域尚未呈现之前,提前触发。

BeforePrint 事件

ActiveReports在一个区域呈现到页面之前触发这个事件。

区域和其中的控件都已经完成了增长和收缩。因此,您可以在这个事件中获取区域和其中控件的准确高度。您可以在BeforePrint事件中改变控件的值或者尺寸,但是您不能改变区域自身的高度。

同样您可以在这个事件中做一些页面相关的格式化工作,因为在这个事件触发时,报表可以知道该区域将会呈现在哪个页面上。一旦事件处理过程完毕,区域将无法改变,因为那时区域已经在这个事件发生之后立即呈现到Canvas上。

AfterPrint 事件

ActiveReports在一个区域呈现到页面后触发这个事件。

虽然AfterPrint在ActiveReport之前的版本1的ServicePack3中间是一个重要的事件。在新版本的ActiveReports中,它已经几乎不用。然而,这个事件在某些情况下依然有用,比如您希望在页面呈现之后再对页面进行绘制。

时间: 2024-09-20 09:05:13

ActiveReports 区域报表中的事件介绍的相关文章

在ActiveReports页面报表中显示Google地图

有些报表需求中需要我们显示国家.城市等地址信息,在报表中添加地图信息会让报表给最终用户代码更多有效信息. 在报表中可以将地图作为图片添加进来,当一个图片显示在报表中时,该图片必须存放到本地计算机或者服务器中,这种处理方法在ActiveReports随机安装的示例报表(CountryFacts.rdlx)中已经介绍过,该示例中的图片是存放在本地文件夹中.然而,有些需求是要加载一些实时位置信息. 如果我们觉得在服务器上存放所有的位置信息图片存在一些局限,那么,从地理位置信息服务提供商获取实时位置信息

ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

原文:ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表 本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 (1)-安装.激活以及产品资源 ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 本篇文章包括以下部分: 1.区域报表和页面报表的区别 两种报表的具体应用场景 区

在一个表单中有一个textbot控件,在报表的load事件中如何使用其值

问题描述 在一个表单中有一个textbot控件,在报表的load事件中如何使用其值.stringsql="selectxmfromt_jp_jsrywherexm='"+this.textBox2.Text.Trim()+"'"在crystalReportViewer1_Load事件中,说textbox2.text不存在 解决方案 解决方案二:用this.试试解决方案三:试过不行,是不是得用变量解决方案四:会不会因为你把字符串的定义放在Load事件中,此时窗口刚刚加

ActiveReports 报表中 RDF 文件解析

AcitveReport 提供两种报表模板,XML(RPX)模板和Code-Based 模板.两者都可以用于设计报表. 但是 RDF 格式文件我们大多不是很了解.许多客户在提到 RDF 格式时显得无所适从.其实 RDF 格式文件是 ActiveReport 一种特有的文件扩展类型.在本片文章中,我们将详细介绍 RDF 格式文件. 什么是 RDF 格式?官方的解释为:"RDF 是一种文件格式,其中数据为静态的.已存储的报表模板在调用时会展示其中的数据". 通过官方术语你是否理解呢?下面阐

JQuery中阻止事件冒泡几种方式及其区别介绍

 JQuery中阻止事件冒泡方式有哪些?本文为大家准备了两种阻止事件冒泡的方式,两种方式的区别在于.return false 不仅阻止了事件往上冒泡,而且阻止了事件本身 JQuery 提供了两种方式来阻止事件冒泡.    方式一:event.stopPropagation();   代码如下: $("#div1").mousedown(function(event){  event.stopPropagation();  });    方式二:return false;  代码如下:

根据数据源字段动态设置报表中的列数量以及列宽度

在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面.本文就讲解一下ActiveReports中该功能的实现方法. 第一步:设计包含所有列的报表模板,将数据源中的所有列先放置到报表设计界面,并设置你需要的列宽,最终界面如下: 第二步:在报表的后台代码中添加一个Columns的属性,用于接收用户选择的列,同时,在报表的ReportStart事件中添加以下代码: /// <s

报表中每隔N行显示一条粗线

问题: 如何在报表中每隔N行显示一条粗线 如何为报表增加一个行号列? 回答: 1.在设计模式里打开该报表,在报表主体里面加一个TextBox,把Name属性改为InputID. 2.把InputID的控件来源(ControlSource)属性设置为=1:再把InputID的运行总和(RunningSum)属性改为"全部之上"(OverAll). 注意:如果把这个控件显示给用户看,你将得到一个以1为步进自动增长的行号列 3.最后,在主体的格式化事件里输入如下代码: 以下为引用的内容:Pr

Access中以文字方式保存文件名的图片如何在报表中预览?

access|文件名 以文字方式保存文件名的图片如何在报表中预览?   问题: 报表中如何预览图片? 数据库表中存放着下面几个字段,学号,姓名,性别,图片路径,如下:1002003001,张三,男,100\2003\1002003001.jpg.现在做报表,想把图片显示出来,因为图片路径为字符类型,所以显示出来的是100\2003\1002003001.jpg,怎样做能把图片显示出来?图片就在数据库所在目录下的100\2003\的文件夹下.   回答: 在报表中放置不可见的TEXTBOX,显示图

如何在Access报表中每隔N行显示一条粗线

access|显示 如何在Access报表中每隔N行显示一条粗线   问题: 如何在报表中每隔N行显示一条粗线如何为报表增加一个行号列?  回答:     1.在设计模式里打开该报表,在报表主体里面加一个TextBox,把Name属性改为InputID.    2.把InputID的控件来源(ControlSource)属性设置为=1:再把InputID的运行总和(RunningSum)属性改为"全部之上"(Over All).    注意:如果把这个控件显示给用户看,你将得到一个以1