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中,它已经几乎不用。然而,这个事件在某些情况下依然有用,比如您希望在页面呈现之后再对页面进行绘制。

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

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

    有些报表需求中需要我们显示国家.城市等地址信息,在报表中添加地图信息会让报表给最终用户代码更多有效信息. 在报表中可以将地图作为图片添加进来,当一个图片显示在报表中时,该图片必须存放到本地计算机或者服 ...

  2. C#中的事件介绍

    什么是事件?事件有哪些?怎么用事件? 一.什么是事件? 事件(Event) 基本上说是一个用户操作,如按键.点击.鼠标移动.输入值改变等等,或者是一些出现,如系统生成的通知.应用程序需要在事件发生时响 ...

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

    本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 ...

  4. 如何在CRM系统中集成ActiveReports最终报表设计器

    有时候,将ActiveReports设计器集成到业务系统中,为用户提供一些自定义的数据表,用户不需要了解如何底层的逻辑关系和后台代码,只需要选择几张关联的数据表,我们会根据用户的选择生成可供用户直接使 ...

  5. ActiveReports最终报表设计器本地化方法介绍

    ActiveReports UI界面中的所有字符信息.错误提示信息.以及一些logo.图像资源,都能够通过运行batch文件来本地化.本文主要介绍资源本地化的具体步骤: 1. 资源目录 所有可本地化的 ...

  6. ActiveReports 报表中 RDF 文件解析

    AcitveReport 提供两种报表模板,XML(RPX)模板和Code-Based 模板.两者都可以用于设计报表. 但是 RDF 格式文件我们大多不是很了解.许多客户在提到 RDF 格式时显得无所 ...

  7. 葡萄城公布新版ActiveReports 9报表控件和报表server

    2014年11月10日---葡萄城宣布正式公布ActiveReports9,包含了三种报表模型:RDL报表.页面报表.区域报表.对于ActiveReports中的这个最新版本号中,我们专注于提高产品的 ...

  8. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  9. jQuery学习笔记(三)jQuery中的事件

    目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...

随机推荐

  1. 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图

    面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...

  2. (转)Python: super 没那么简单

    原文:https://mozillazg.com/2016/12/python-super-is-not-as-simple-as-you-thought.html python 约定¶ 单继承¶ 多 ...

  3. sql server always on安装

    always on 是sql server 服务器的数据同步备份容灾工具, 集中了故障转移群集.数据库镜像和日志传送等功能. 环境: window server 2012 sql server 201 ...

  4. c++中double类型控制小数位数

    有时,我们需要输出确定小数位数的double,可以先引入如下头文件: #include <iomanip> 然后通过下列方式输出: double zzz = 8.66666; cout & ...

  5. Unity学习系列一简介

    一.简介 Unity的目标是为了提升"依赖注入"的思想,去建立更加松耦合的系统.patterns & practices 小组在那个时候实现DI的方式和我们现在认为的DI有 ...

  6. SpringSecurity学习之基于数据库的用户认证

    SpringSecurity给我们提供了一套最基本的认证方式,可是这种方式远远不能满足大多数系统的需求.不过好在SpringSecurity给我们预留了许多可扩展的接口给我们,我们可以基于这些接口实现 ...

  7. 【JAVA SPRING】IOC与AOP

    IOC(注入)有三种类型: 构造函数注入: 属性注入: 接口注入: JAVA反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的 ...

  8. Chapter 3 Phenomenon——24

    My mom was in hysterics, of course. 我的母亲当时是歇斯底里的发疯了. I had to tell her I felt fine at least thirty t ...

  9. linux开机自启动设置,自定义开机启动模版,nginx开机自启动服务

    /etc/init.d 目录,我们把shell脚本放在这个目录下来作为启动脚本 都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别. ...

  10. idea调试springmvc出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    idea调试springmvc出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderList ...