2009年4月17日星期五

Ext.TabPanel遇到的问题与解决方法

今天在Ext.form.FormPanel中嵌套TabPanel时,发现了这样一个问题:
创建了一个FormPanel,在这个Panel中需要以Tab的方式展现数据,每个TabPanel中包含一个FormPanel的字段。但是我发现在每次FormPaneel中的数据load完成之后,只有处于Active状态的Tab中的数据存在,而Active其他Tab后,数据都看不见,所以我怀疑是BasicForm装载数据的时候,这些处于非active状态的panel并没有创建出来。
解决办法:
在FormPanel中的Form装载完数据后,把这些出具备份到这个BasicForm中的一个属性中,比如result_data。之后在TabPanel的这些Field渲染的时候,判断result_data是否存在,如果存在,则把对应的字段值填进去。
示例代码:

//监听basicForm中的数据加载完成
new Ext.FormPanel({
listeners:{
actioncomplete:function(form,action){
if(action.type=="load"){
form.result_data=action.result.data
}
}
}
...
...
//formPanel中嵌套的tabPanel
{
xtype:'tabpanel',
activeTab: 0,
items : [{
title : track_window.column.text_what_has_been_done,
height : 180,
layout:'fit',
items:{//tabPanel中所包含的Form的字段
xtype : 'htmleditor',
name : 'progress_log_desc[has_done]',
autoScroll: true,
listeners:{//监听此字段的render事件
render:function(he){
var data=Ext.getCmp('_mng_task_track_win_form_').getForm().result_data
if(data!=null&&data!=undefined){
he.setValue(data["progress_log_desc[has_done]"])
}
}
}
}
}, {
title : track_window.column.text_what_impedes,
height : 180,
layout:'fit',
items:{
xtype : 'htmleditor',
name : 'progress_log_desc[impedes]',
autoScroll: true,
listeners:{
render:function(he){
var data=Ext.getCmp('_mng_task_track_win_form_').getForm().result_data
if(data!=null&&data!=undefined){
he.setValue(data["progress_log_desc[impedes]"])
}
}
}
}
}, {
title : track_window.column.text_what_next,
height : 180,
layout:'fit',
items:{
xtype : 'htmleditor',
name : 'progress_log_desc[the_next]',
autoScroll: true,
listeners:{
render:function(he){
var data=Ext.getCmp('_mng_task_track_win_form_').getForm().result_data
if(data!=null&&data!=undefined){
he.setValue(data["progress_log_desc[the_next]"])
}
}
}
}
}, {
title : track_window.column.text_other_comments,
height : 180,
layout:'fit',
items:{
xtype : 'htmleditor',
name : 'progress_log_desc[other_comments]',
autoScroll: true,
listeners:{
render:function(he){
var data=Ext.getCmp('_mng_task_track_win_form_').getForm().result_data
if(data!=null&&data!=undefined){
he.setValue(data["progress_log_desc[other_comments]"])
}
}
}
}
}]
}

没有评论:

发表评论