自定义事件监听类

在报表进行某些操作的过程中,有时候需要在任务前后执行一系列操作,例如:某张报表在打印前进行传一个参数让报表某行隐藏掉等。

自定义事件监听有以下几种

1、IDataSetEventListener

接口说明

数据集计算和加载过程中的事件监听接口bios.report.api.events.IDataSetEventListener

方法说明

onLoadData

用途:在数据集进行数据加载(查询、计算等)之前,触发该事件

语法:boolean onLoadData(ReportDataSet dataSet)

参数:dataSet - 将要进行加载的数据集

返回值:返回false时,该数据不进行数据加载;返回true时,正常加载。

onLoadDataFinished

用途:数据集完成加载之后,触发该事件

语法:void onLoadDataFinished(ReportDataSet dataSet)

参数:dataSet - 完成加载的数据集

使用操作

设计器端:

选择【工具栏】->【窗口】->【首选项】->【通用配置】->【类加载配置】,在【自定义接口实现类配置】中添加自定义类,添加方式有两种,

一是将编译好的.class文件打成jar包, 点击【添加JAR】,将jar包导入;

二是点击【添加文件夹】,将包含.class文件的文件夹添加进来。

然后在报表中创建数据集时,在数据加载监听事件里写上监听类的全路径

服务器端:

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、IExportEventListener

接口说明

导出报表时触发的事件。bios.report.api.events.IExportEventListener

方法说明

onExportExcel

用途:导出excel时触发该事件,可在该方法中对工作表模型进行修改

语法:void onExportExcel(ReportMark rptMark,org.apache.poi.hssf.usermodel.HSSFWorkbook workbook)

参数:rptMark - 正在运行的报表标识

workbook - 报表导出的excel工作表模型

onExportPdf

用途:导出PDF时触发该事件,可在该方法中对PDF模型进行修改

语法:void onExportPdf(ReportMark rptMark,com.lowagie2.text.Document doc)

参数:rptMark - 正在运行的报表标识

doc - 报表导出的pdf文档模型

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<exportEventListener>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> </userDef>

3、IFillinEventListener

接口说明

填报报表在进行数据提交录入时的事件监听接口。bios.report.api.events.IFillinEventListener

方法说明

onCommitData

用途:填报报表将要进行数据提交前,触发该事件

语法:java.lang.String onCommitData(ReportMark rptMark)

参数:rptMark - 正在运行的报表标识

返回:返回值为null时,正常执行;返回值不为null时,不提交数据,返回值将做为错误提示信息

onCommitDataFinished

用途:填报报表中所有填报操作都执行完毕,数据提交完成后,触发该事件

语法:void onCommitDataFinished(ReportMark rptMark)

参数:rptMark - 正在运行的报表标识

onUpdateData

用途:填报报表中的某个填报操作进行数据更新前,触发该事件

语法:java.lang.String onUpdateData(ReportMark rptMark, FillinDatas fillinDatas)

参数:rptMark - 正在运行的报表标识

fillinDatas - 填报数据对象,包含了填报操作信息和来自客户端的数据

返回:返回值为null时,正常执行;返回值不为null时,不提交数据,返回值将做为错误提示信息

onUpdateDataFinished

用途:填报报表中的某个填报操作执行完毕后,触发该事件

语法:void onUpdateDataFinished(ReportMark rptMark, FillinDatas fillinDatas)

参数:rptMark - 正在运行的报表标识

fillinDatas - 填报数据对象,包含了填报操作信息和来自客户端的数据

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<fillinEventListener>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> </userDef>

4、IPrintEventListener

接口说明

报表打印事件监听接口。bios.report.api.events.IPrintEventListener

方法说明

onPrintBegin

用途:打印开始前事件触发

语法:java.lang.String onPrintBegin(ReportMark rptMark, javax.servlet.http.HttpServletRequest request)

参数:rptMark - 正在运行的报表标识

request - HttpServlet请求

返回:验证通过时返回null,执行打印;否则向用户返回错误提示信息,不执行打印

onPrintEnd

用途:打印结束后事件触发

语法:java.lang.String onPrintEnd(ReportMark rptMark, javax.servlet.http.HttpServletRequest request, java.lang.String errorMessage)

参数:rptMark - 正在运行的报表标识

request - HttpServlet请求

errorMessage - 客户端打印出错时抛出的异常信息;打印正常执行完毕时为null

返回:报表打印完成或失败时,向用户返回的提示信息,为null时不提示

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<printEventListener>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> </userDef>

5、QueryEventListener

接口说明

查询表单提交后、报表查询前触发的事件,可在该事件中对提交的参数进行加工处理。bios.report.api.events.QueryEventListener

字段说明

protected javax.servlet.http.HttpServletRequest request 当前的http请求

构造方法

public QueryEventListener()

方法说明

init

用途:初始化方式,系统自动调用。(已过时)

语法:public final void init(javax.servlet.http.HttpServletRequest request, java.util.Map<java.lang.String,java.lang.String> paramsMap, java.util.Map<java.lang.String,java.lang.String> varsMap)

getParamNames

用途:获取报表中所有参数的名称

语法:protected final java.lang.String[] getParamNames()

getParamValue

用途:获取某个报表参数的值

语法:protected final java.lang.String getParamValue(java.lang.String paramName)

参数:paramName - 报表参数名称

setParam

用途:设置报表参数值,可用来完成修改或新增操作

语法:protected final void setParam(java.lang.String paramName, java.lang.String paramValue)

参数:paramName - 报表参数名称

paramValue - 新的参数值

getVarNames

用途:获取报表中所有变量的名称

语法:protected final java.lang.String[] getVarNames()

getVarValue

用途:获取某个报表变量的值

语法:protected final java.lang.String getVarValue(java.lang.String varName)

参数:varName - 报表变量名称

setVar

用途:设置报表变量值,可用来完成修改或新增操作

语法:protected final void setVar(java.lang.String varName, java.lang.String varValue)

参数:varName - 报表变量名称

varValue - 新的变量值

onQuery

用途:用户需要实现该方法,可以在该方法中对报表参数和变量进行加工处理

语法:public abstract void onQuery()

使用操作

设计器端:

选择【工具栏】->【窗口】->【首选项】->【通用配置】->【类加载配置】,在【自定义接口实现类配置】中添加自定义类,添加方式有两种,

一是将编译好的.class文件打成jar包, 点击【添加JAR】,将jar包导入;

二是点击【添加文件夹】,将包含.class文件的文件夹添加进来。

然后在报表中查询表单设计时,点击查询事件监听按钮,在查询监听事件设置中写上监听类的全路径

web应用端:

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。