8年低代码创业,分享优秀低代码开发经验及技巧。
前几天介绍了列表的相关事件案例,事件能让我们在快速开发时提供极大的便利。那么表单事件有些呢?
公共事件(列表和表单均适用)
事件名称 | 事件说明 |
渲染(render) | 组件渲染时触发 |
渲染前(beforerender) | 组件渲染前触发 |
渲染后(afterrender) | 组件渲染后触发 |
激活(activate) | 组件初次进入时触发 |
事件触发顺序:
- 初始化组件时事件触发顺序:渲染前>渲染>渲染后>激活>被激活(表单)
- 组件刷新时事件触发顺序:渲染前>渲染>渲染后>被激活(表单)
公共事件在上一章节已作详细介绍,这里就不重复了。
表单事件(仅适用列表)
事件名称 | 事件说明 |
数据提交结束 (endsubmit) | 数据保存操作完全结束后触发 |
数据提交前(beforesubmit) | 数据保存之前触发 |
数据提交后(aftersubmit) | 数据保存之后触发 |
被激活(selfactivate) | 表单激活后触发 |
超链接(selfactivate) | 点击文档的时候触发 |
标签超链接(labellinkclick) | 点击lable(标签)的时候触发事件 |
设置值(setvalue) | 给组件设置值的时候触发 |
值改变(change) | 该组件值发生变化后触发 |
确定按钮(okbuttonclick) | 点击窗体确定按钮触发 |
查询后(query) | 点击窗体确定按钮完成后(赋值完成)触发 |
查询窗体初始化(sswinrender) | 窗体渲染后触发 |
查询前(beforequery) | 点击组件并且窗体未弹出之前触发 |
数据加载完(storeloaded) | 组件列表数据加载完成后触发 |
数据项变化(recordchange) | 组件列表数据发生添加和修改操作时触发 |
数据添加前(storebeforeadd) | 组件列表数据添加操作前触发 |
数据添加(storeadd) | 组件列表数据添加后触发 |
数据删除前(storebeforeremove) | 组件列表数据删除前触发 |
数据删除(storeremove) | 组件列表数据删除后触发 |
数据清空前(storebeforeremoveall) | 组件列表数据批量删除前触发 |
数据清空(storeremoveall) | 组件列表数据批量删除后触发 |
1、endsubmit(数据提交结束)
参数说明
参数名 | 类型 | 说明 |
form | Ext.form.Panel | 当前表单组件的对象 |
doAct | String | doSave(添加)/doUpdate(修改) |
type | String | 操作类型,new(保存新建) |
values | Object | 表单数据 |
示例
数据提交完成获取当前表单字段数据
function(form,act,type,obj){
var testMC = obj.TB1_MC;
}
2、beforesubmit(数据提交前)
参数说明
参数名 | 类型 | 说明 |
form | Ext.form.Panel | 当前表单组件的对象 |
doAct | String | doSave(添加)/doUpdate(修改) |
type | String | 操作类型,new(保存新建)/copy(保存复制)/空(普通操作) |
示例
表单字段A控制另一个字段B可输入值是否在允许范围内,不在范围内时给出提示,代码如下:
function(form,act,type,obj){
var QJSQ_QJLB_CODE = form.form.findField("QJSQ_QJLB_CODE").getValue();
var cs = form.form.findField("QJSQ_CSCS").getValue();
//如果请假类型是事假,并且cs 数字大于100的时候给提示
if(QJSQ_QJLB_CODE =="1" && cs>100){
JE.alert('长沙测试为100以内的数字');
return false;
}else{
return true;
}
}
3、aftersubmit(数据提交后)
参数说明
参数名 | 类型 | 说明 |
form | Ext.form.Panel | 当前表单组件的对象 |
doAct | String | doSave(添加)/doUpdate(修改) |
type | String | 操作类型,new(保存新建)/copy(保存复制)/空(普通操作) |
values | Object | 表单数据 |
示例
数据提交后,获取表单数据
function(form,act,type,obj){
var value1 = form.form.findField("TB1_YESORNOTEST_CODE").getValue();
if(act == 'doSave';){
JE.alert("保存后事件");
}
})
4、selfactivate(被激活)
参数说明
参数名 | 类型 | 说明 |
form | Ext.form.Panel | 当前表单组件的对象 |
示例
根据主键是否存在判断表单是否只读,在表单被激活事件中处理,代码如下:
function(form){
//获取主键
var JE_DEMO_COURSE_ID=form.form.findField('JE_DEMO_COURSE_ID').getValue();
//判断是否为空
if(JE_DEMO_COURSE_ID !=''){
form.setReadOnly(true);
}else{
form.setReadOnly(false);
}
}
5、linkclick(超链接)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前组件对象 |
示例
JE.msg('超链接事件');
6、labellinkclick(标签超链接)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前组件对象 |
示例
JE.msg('标签超链接事件');
7、setvalue(设置值)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前组件对象 |
value | String | 该组件的值 |
示例
设置值完成后触发
function(field, value){
if(value == '1'){
JE.alert("设置值");
}
}
8、change(值改变)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前组件对象 |
value | String | 该组件的值 |
eOpts | Object | listener对象 |
示例
案例负责人值改变的时候吧值赋给案例描述
//获得表单组件
var form = field.up('jeformview');
//获得ALWD_ALMS字段组件对象
var ALWD_ALMS = form.form.findField('ALWD_ALMS');
//赋值
ALWD_ALMS.setValue(value);
9、okbuttonclick(确定按钮)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前表单组件的对象 |
sels | Array | 选中的数据 |
sswin | Ext.window.Window | 弹出窗体的对象 |
返回数据说明
boolean 如果返回false,不关闭窗体
示例
点击确定按钮弹出窗体
JE.msg('确定按钮事件!');
return true;
10、query(查询后)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前表单组件的对象 |
sels | Array | 选中的数据 |
返回数据说明
boolean 如果返回false,不关闭窗体
示例
弹窗选择数据确认后,执行查询后方法,里面可获取我们当前表单属性,也有选择数据的属性,也可从而给表单某些字段赋值
function(field,sels){
var JE_ZB_XMXX_ID = sels[0].data.JE_ZB_XMXX_ID; //取得选中数据的主键
//通过项目信息的主键,去查询项目明细数据
var icons = JE.ajax({url:"/je/load",params:{tableCode:'JE_ZB_XMMX',j_query: Ext.JSON.encode([{code:"JE_ZB_XMXX_ID",type:"=",value:JE_ZB_XMXX_ID}]),limit:-1}}).rows;
//当前表单对象
var form = field.up("jeformview");
//获取子功能集合
var child = form.down("childfuncfield[name=childfuncfield_1]");
//获取到子功能集合grid
var grid = child.grid;
//把查询到的项目明细循环放到子功能集合列表上
Ext.each(icons,function(data){
//构建子功能集合列表数据默认值
var xmmx = grid.funcData.getDefVals();
//把查询到的子功能集合数据,赋值到构建的子功能默认数据中
xmmx = Ext.applyIf(xmmx,data);
//把数据赋值到子功能集合列表中
var rec = grid.getStore().add(xmmx);
});
}
11、sswinrender(查询窗体初始化)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前表单组件的对象 |
sswin | Ext.window.Window | 弹出窗体的对象 |
示例
动态的显示隐藏查询窗口grid中的列
function(field,sswin){
//获取到grid
var grid = sswin.down('[xtype=jedataview]').down('[xtype=jegridview]');
//动态的隐藏列
var cloumeheader = grid.headerCt.getCmp('XMGL_XMYS').hide();
12、beforequery(查询前)
参数说明
参数名 | 类型 | 说明 |
field | Ext.form.field.Field | 当前表单组件的对象 |
示例
对查询选择弹出窗口中的数据进行过滤
function(field){
var form = field.up("jeformview");
var XMXX_LXR = form.getValue("XMXX_LXR"); //立项人
//判断立项人是否为空
if(JE.isNotEmpty(XMXX_LXR)){
//之前的写法
//field.whereSql = "and XMXX_LXR = '"+XMXX_LXR+"'";
//加密后的写法
field.j_query = '[{"type":"=","code":"XMXX_LXR","value":"'+XMXX_LXR+'","cn":"and"}]';
}
}
13、recordchange(数据项变化)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
record | Ext.data.Model | 单前操作的数据对象 |
store | Ext.data.Store | 列表的数据集 |
示例
计算子功能集合中的数据,并将总和回显到主功能字段
function(field,record,store){
//通过字段找到表单 表单再找到汇总字段
var form = field.up('panel[xtype=jeformview]'); //通过子功能集合字段找到当前表单
var XMXX_XMJE = form.form.findField('ZHAUNYUN_TQ'); //主功能:项目金额
var money =''; //所有金额之和 PGG_XSJE
//通过grid.store.each循环遍历子功能数据集
store.each(function(itemData){
money += itemData.data.PRODUCT_SPMC; //子功能:项目明细金额
})
XMXX_XMJE.setValue(money); //给合计字段项目金额:赋值合计的值
}
14、storebeforeadd(数据添加前)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
返回数据说明
boolean 如果返回false,中断添加操作
示例
数据添加前,为数据设置默认值
function(field,grid){
var form = field.up("jeformview");
var HY_SFKQ_CODE=form.getFields("HY_SFKQ_CODE").getValue();
if(HY_SFKQ_CODE=="0"){
var SY_XMID = form.getFields("SY_XMID").getValue(); //项目ID
var XM_NAME = form.getFields("XM_NAME").getValue();
var XM_CODE = form.getFields("XM_CODE").getValue();
var ddGrid = field.grid;
var data = field.funcData.getDefVals();//构建子功能集合默认值
data.SY_XMID = SY_XMID;
data.XM_NAME = XM_NAME;
data.XM_CODE = XM_CODE;
var rec = ddGrid.getStore().add(data);
}
return true;
}
15、storeadd(数据添加)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
rec | Ext.data.Model | 单前操作的数据对象 |
示例
使用主功能数据给子功能集合中某一字段赋值
function(field,grid,rec){
var form = field.up("jeformview");
//主表单字段值
var x = form.getValue("ZHAUNYUN_ZNCX");
//循环给子功能集合某一个列赋值
Ext.each(rec,function(item,index){
item.set("PRODUCT_SPMC",x);
});
16、storebeforeremove(数据删除前)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
rec | Ext.data.Model | 当前操作的数据对象 |
返回数据说明
boolean 如果返回false,中断删除操作
示例
对想要删除的数据进行判断,不符合条件的不能删除
function(field,grid,rec){
var flag = true;
var data= JE.DATE.parseDateTime(rec.data.SY_CREATETIME);
var newData = new Date();
if(data >= newData){
flag = true;
}else{
flag = false;
JE.msg('创建日期小于今天,数据不能删除');
}
return flag;
}
17、storeremove(数据删除)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
rec | Ext.data.Model | 单前操作的数据对象 |
示例
删除子功能集合数据时,计算删除数据的总金额,并把计算后的数据回显到主功能字段上
function(field,grid,rec){
//通过字段找到表单 表单再找到汇总字段
var form = field.up('panel[xtype=jeformview]');
var SBGL_GG = form.form.findField('SBGL_GG');
var SBGL_GGvalue = form.form.findField('SBGL_GG').getValue();
var money = 0; //所有金额之和 PGG_XSJE
//通过grid.store.each循环遍历子功能数据集
Ext.each(rec,function(item,index){
money += item.data.KHGLLXR_LXRDH;
});
SBGL_GGvalue -= money
SBGL_GG.setValue(SBGL_GGvalue); //给合计字段项目金额:赋值合计的值
}
18、storebeforeremoveall(数据清空前)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
recs | Array | 单前操作的数据对象数组 |
返回数据说明
boolean 如果返回false,中断批量删除操作
示例
判断数据是否能删除,当包含不能删除的数据的时候给出提示
function(field,grid,recs){
var newData = new Date();
var flag = true;
Ext.each(recs,function(item,index){
var data= JE.DATE.parseDateTime(item.data.SY_CREATETIME);
if(data <= newData){
flag = false;
}
});
if(!flag){
JE.alert('有不能删除的数据');
}
return flag;
}
19、storeremoveall(数据清空)
参数说明
参数名 | 类型 | 说明 |
field | JE.core.ux.form.ChildFuncField | 当前表单组件的对象 |
grid | Ext.grid.Panel | 组件中的grid对象 |
recs | Array | 单前操作的数据对象数组 |
示例
删除子功能集合数据时,计算删除数据的总金额,并把计算后的数据回显到主功能字段上
function(field,grid,recs){
//通过字段找到表单 表单再找到汇总字段
var form = field.up('panel[xtype=jeformview]');
var SBGL_GG = form.form.findField('SBGL_GG');
var SBGL_GGvalue = form.form.findField('SBGL_GG').getValue();
var money = 0; //所有金额之和 PGG_XSJE
//通过grid.store.each循环遍历子功能数据集
Ext.each(recs,function(item,index){
money += item.data.KHGLLXR_LXRDH;
});
SBGL_GGvalue -= money
SBGL_GG.setValue(SBGL_GGvalue); //给合计字段项目金额:赋值合计的值
}
想了解学习更多内容,欢迎关注。