extjs window控件closeAction详细说明

来源:互联网 发布:六爻装卦软件 编辑:程序博客网 时间:2024/06/05 04:54

最近在用extjs做前台有关的页面,用到了window组件,有个关于closeAction的疑惑到今天终于算是理解清楚了,特此记录一下。


function rwModify() {
var record = workListGrid.getSelectionModel().getSelected();
if (record.data.Rwzt != '0') {
Ext.Msg.alert("提示信息", "已发布,不允许修改!");
return;
}

var data_Bufen = workHandler.getSavedData(record.id);
Ext.getCmp('rwid').setValue(data_Bufen[0][0]);
Ext.getCmp('apid').setValue(data_Bufen[0][1]);
Ext.getCmp('dblx').setValue(data_Bufen[0][2]);
win.show();


}


var win = new Ext.Window({
title : '修改任务',
width : 680,
height : 520,
id:'ttt',
closeAction :'hide',
items : [publishForm],
fbar : [{
text : '修改',
width : 100,
handler : function() {
if (modifyForm.getForm().isValid()) {
var values = modifyForm.getForm().getFieldValues();
var val = examInfo.modiftForm(values, {
callback : function(result) {
if (result == 'success') {
Ext.Msg.alert("提示信息", "修改成功!");
win.close();
} else {
Ext.Msg.alert('信息提示', '修改失败!');
}
},
async : false
});
queryData();
} else {
Ext.Msg.alert("提示信息",
"存在不符合校验规则的数据,它们已经被标示成“红色”,请先修改正确!")
}
}
}, {
text : '发布',
width : 100,
handler : function() {
if (modifyForm.getForm().isValid()) {
var values = modifyForm.getForm().getFieldValues();
var val = examInfo.saveData(values, {
callback : function(result) {
if (result == 'success') {
Ext.Msg.alert("提示信息", "添加成功!");
win.close();
} else {
Ext.Msg.alert('信息提示', '添加失败!');
}
},
async : false
});
queryData();
} else {
Ext.Msg.alert("提示信息",
"存在不符合校验规则的数据,它们已经被标示成“红色”,请先修改正确!")
}
}
}, {
text : '关闭',
width : 70,
handler : function() {
win.hide();
}
}]
});


需求是:页面有个grid表格,表格前几列是数据列,最后一列是操作列,此处是修改操作。当点击修改链接时执行rwModify方法,弹出一个修改窗口,即对应上面代码中的win窗口,我们可以把新建win窗口的代码放入rwModify方法内部,win配置中的closeAction设置成close点击窗口右上角的‘×’号关闭,当再次点击修改链接时能再次弹出窗口。但是这样每次都需要创建dom对象,因为当点击‘×’号时从dom中销毁窗口子控件。当连续多次点击修改可能需创建多个dom对象,电脑就可能出现卡顿。比较好的办法就是把win窗口的新建不放入rwModify方法内,再通过配置closeAction为hide,这样就能保证每次点击‘×’后再点击修改窗口能同样弹出来,另外窗口内部下方的关闭按钮用win.hide也可以保证点击关闭按钮后再点击修改窗口能同样弹出,此处如果写成win.close再点击修改窗口就弹不出了,因为close动作实际把dom对象内的窗口控件销毁了。

0 0