关于Ext的控件复用的问题
EUII 2010-12-01 06:18:01 各位好:我由于才开始学习ext并用ext制作了一个应用。
描述一下场景:
首先进入一个数据列表显示数据,有一个添加按钮和编辑按钮,添加按钮我new出一个新的窗口,编辑按钮我也new出一个新的窗口对象。但是这两个窗口加载同一个frompanel,但是实践证明,编辑窗口可以显示并正常显示了内部的panel,另一个添加操作,窗口可以正常显示但是内部的panel不能正常显示。现在我想问一下,有没有办法能避免新建两个panel,因为这两个panel的验证方法是完全相同的,写两遍貌似很麻烦。
代码如下:
//修改窗口
var win_modify = new Ext.Window({
layout: 'fit',
id:'win_modify',
title:'修改数据字典信息',
width:340,
height:340,
closable:true,
resizable:true,
closeAction: 'hide',
items:modifyDataDicForm,
modal:true,
buttons : [{
text:'确定',
iconCls:'icon-ButtonSet-OK',
handler:function(){
Ext.MessageBox.confirm('请确认', '您确实要修改信息吗? ', modDataDic);
}
},
{
text : '关闭',
iconCls:'icon-ButtonSet-close',
handler : function() {
win_modify.hide();
}
}]
});
function modifyOpt() {
if(win_modify){
win_modify.show();
}
};
var modifyDataDicForm = new Ext.FormPanel({
layout: 'form',
border: false,
items: [
{
layout:'column',
border: false,
width: 800,
items:[{
columnWidth:.42,
border: false,
layout: 'form',
items: editDataDicPanel
}]
}]
});
//添加窗口
var win_add = new Ext.Window({
layout: 'fit',
id:'win_add',
title:'添加字典值',
width:350,
height:300,
closable:true,
resizable:true,
closeAction: 'hide',
items:dataDicForm,
buttons : [{
text:'确定',
iconCls:'icon-ButtonSet-OK',
handler:function(){
Ext.MessageBox.confirm('请确认', '您确实要添加吗? ', addDataDic);
}
},
{
text : '关闭',
iconCls:'icon-ButtonSet-close',
handler : function() {
win_add.hide();
}
}]
});
function addShow(){
if(win_add){
win_add.show();
}
};
var dataDicForm = new Ext.FormPanel({
layout: 'border',
border: false,
items: [{
region: 'center',
layout: 'fit',
border: false,
items: addDataDicPanel
}
]})
//pancel
var addDataDicPanel = new Ext.Panel({
frame:true,
layout: 'form',
border: false,
labelWidth: 80,
bodyStyle: 'text-align: left;padding:20px 20px 0',
items:[
new Ext.form.ComboBox({
id:'tableName',
fieldLabel: '所属数据表',
typeAhead: true,
forceSelection: true,
allowBlank: false,
triggerAction: 'all',
lazyRender: true,
width: 150,
mode:'local',
store:firstStore,
valueField:'tableName',
displayField:'tableChinese',
emptyText:'请选择',
}),
new Ext.form.ComboBox({
id:'colsName',
fieldLabel: '所属字段',
typeAhead: true,
forceSelection: true,
allowBlank: false,
triggerAction: 'all',
lazyRender: true,
width: 150,
mode:'local',
store:secondStore,
valueField:'colDispName',
displayField:'colDispName',
emptyText:'请选择'
})
]
});