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. Docker三剑客之常用命令

    一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...

  2. 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 0、学习目标

    Learn to build a neural network with one hidden layer, using forward propagation and backpropagation ...

  3. PHP:session无法使用

    今天在将一套程序放到其他服务器上执行的时候,发现后台的登录验证码不管输入正确与否,总是显示: 验证码输入有误 接着就开始debug了. 因为正确的验证码结果已经经过加密之后保存在了session中,所 ...

  4. 多线程编程——java

    1.进程和线程 进程:一个计算机程序的运行实例,包含了需要执行的指令:有自己的独立地址空间,包含程序内容和数据:不同进程的地址空间是互相隔离的:进程拥有各种资源和状态信息,包括打开的文件.子进程和信号 ...

  5. struts和hibernate整合

    程序示例: 1.引入jar包 2.实体对象 Dept.java package com.gqx.entity; import java.util.HashSet; import java.util.S ...

  6. git 删除远程分支文件夹

    把不需要版本控制的文件提交到远程分支上后,需要删除远程分支上的文件,用以下操作即可: git rm -r –cached dirname //删除远程文件夹,但保留本地文件夹 git commit - ...

  7. Entity Framework 6.x 学习之 - 创建带连接表的实体模型 with Database First

    一.Modeling a Many-to-Many Relationship with No Payload 1. 创建数据库表 CREATE TABLE [Album] ( , ), ) COLLA ...

  8. [leetcode]238. 除自身以外数组的乘积

    题目描述 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输 ...

  9. 分布式理论(二)——Base 理论

    前言 在前文 分布式理论(一) -- CAP 定理 中,我们说,CAP 不可能同时满足,而分区容错是对于分布式系统而言,是必须的.最后,我们说,如果系统能够同时实现 CAP 是再好不过的了,所以出现了 ...

  10. c#里面如何激活一个外部程序进程并显示在最前

    using System.Diagnostics; using System.Runtime.InteropServices; [DllImport("user32.dll")] ...