1. 概述
根据控件响应时间的不同,我们把控件的事件分为九种:初始化后、编辑前、编辑后、编辑结束、点击、状态改变、值改变、上传后及节点生成。
2. 控件事件类型明细
控件\事件 | 初始 化后 | 编辑前 | 编辑后 | 编辑 结束 | 点击 | 状态 改变 | 值改变 | 上传后 | 节点 生成 |
---|---|---|---|---|---|---|---|---|---|
事件 名称 | afterinit | beforeedit | afteredit | stopedit | click | statechange | valuechange | callback | nodeadd |
文本 | √ | √ | √ | √ | |||||
标签 | √ | √ | √ | ||||||
按钮 | √ | √ | |||||||
下拉框 | √ | √ | √ | √ | √ | ||||
下拉复选框 | √ | √ | √ | √ | √ | ||||
日期 | √ | √ | √ | ||||||
数字 | √ | √ | √ | √ | |||||
下拉树 | √ | √ | √ | √ | √ | √ | |||
单选按钮组 | √ | √ | |||||||
复选框组 | √ | √ | |||||||
文本域 | √ | √ | √ | √ | |||||
密码 | √ | √ | √ | √ | |||||
复选框 | √ | √ | |||||||
视图树 | √ | √ | √ | ||||||
列表 | √ | √ | |||||||
文件 | √ | √ |
注:填报页面下没有标签控件。
3. 触发机制
FineReport 控件只允许在填报和决策报表(包括参数界面)中使用,所以控件分为填报控件和决策报表控件,由于填报和决策报表的区别,控件事件的触发时间有所区别,下面分别介绍:
批量删除。
决策报表的初始化事件是在控件加载结束后触发,填报页面中除了复选框控件、单选按钮组控件、复选框组控件和视图树控件是在控件加载结束时触发初始化事件之外,其他控件均是在填报时,点击控件的编辑按钮时(单击单元格时)触发;初始化事件示例请查看控件进入编辑状态时触发。
- 控件编辑后触发,如果编辑后事件中使用了 alert 提示,请改用 toast 提示,否则会影响中文的输入;编辑后事件示例请查看
- 焦点离开控件时触发;编辑结束事件示例请查看:
批量删除。
下拉框、下拉复选框、下拉树这三个控件的点击事件是在点击下拉项的时候触发,其他控件是在点击控件的时候触发;点击事件示例请查看 状态改变事件是指控件的值发生改变时触发,该事件只能适用于复选框、单选按钮组和复选框组中。状态改变事件示例请查看注:填报中,单元格控件设置了编辑结束事件,鼠标焦点点进控件,不做任何改动,再点出控件,这时不会触发编辑结束事件,但是在参数面板中的决策报表控件却会触发编辑结束事件,如果想要在填报单元格控件的编辑结束事件实现与决策报表控件一样的效果,不作任何改动,点出控件时,也触发编辑结束事件,只需要为该控件添加一个初始化事件:
注:内置的提交无法在编辑结束后事件中使用,因为内置提交事件会触发编辑结束后事件,编辑结束后事件会触发提交事件,造成死循环;
contentPane.setFireStopEditOnChange(false);
4. 兼容性
4.1 视图树
7.0.5 版本中删除了视图树的编辑前、编辑后、编辑结束事件,原来用户如果设置了编辑后事件,会自动转为点击事件。
4.2 文件控件
7.0.5 版本中删除了文件控件的编辑前、编辑后、编辑结束事件,如果用户设置了编辑后和编辑结束事件,会自动转为上传后事件。
5. 控件事件中 JS 脚本的使用方法
为某个控件事件添加 JS 脚本,那么怎么通过 JS 脚本引用控件,如何使用控件呢?控件都有什么方法可用呢?详细请参照 引用控件及控件方法列表。