读书人

extjs初学者,小弟我的tabpanel新增tab

发布时间: 2012-12-22 12:05:07 作者: rapoo

extjs菜鸟,我的tabpanel新增tab第一次可以正常显示,再次请求就什么都没有了呢?
我想通过点击一个树形节点,在我的tabpanel中生成一个新的tab,然后显示它,这一步可以实现可是关闭后再次点击同一个节点之后,新生成的tab就只能显示一个标题,里面的内容就没有了,不知道为什么
这是我的树在文件main.js中
var mainTab = new Ext.TabPanel({
region : 'center',
items : {
title : '系统介绍',
html : '<div style="position:absolute;top:60;left:120;"></div>'
}
});
mainTab.activate(0);
function createTree(treeId)
{

……
tree.on("click", function(node, e) {
if(!mainTab.items.containsKey(node.id))
{
var tab = mainTab.add({
id : node.id,
title : node.text,
closable : true,
layout : 'fit',
items : [flight_panel]//是测试代码,让所有的树形节点生成一样的tab内容
}).show();
}
else
{
mainTab.items.item(node.id).show();
}


});
Ext.onReady(function() {……});

这是包含变量flight_panel的fligh.js文件

……
var flight_panel =new Ext.Panel( {
id : 'flight_panel',
border : false,
layout : 'border',
items : [grid]//flight_panel里面是内容的,就是这个内容,在第一次点击一个树形节点时是会出现的,第二次点击就不出现了
});


[最优解释]

var flight_panel =new Ext.Panel( {
//id : 'flight_panel', //把这句去掉试试。
border : false,
layout : 'border',
items : [grid]//flight_panel里面是内容的,就是这个内容,在第一次点击一个树形节点时是会出现的,第二次点击就不出现了
});

[其他解释]
这2个js文件同时引入到了,main.jsp中即
……
<script type="text/javascript" src="<%=path%>/js-css/flight.js"></script>
<script type="text/javascript" src="<%=path%>/js-css/main.js"></script>
……
[其他解释]
引用:
JScript code
var flight_panel =new Ext.Panel( {
//id : 'flight_panel', //把这句去掉试试。
border : false,
layout : 'border',
items : [grid]//flight_panel里面是内容的,就是这个内容,在第一次点击一个树形节点时是会出现的,第二次点击就不出现了
});
……

试了不行……
[其他解释]
那啥自己再顶一下
[其他解释]
该回复于2010-08-23 15:06:43被版主删除
[其他解释]
大虾们给点指点吧,google都翻了n遍了还是没找到答案啊
[其他解释]
自己解决了,首先在mainTab定义中增加一段变为
var mainTab = new Ext.TabPanel({
region : 'center',
autoDestroy:false,
items : {
/** 定义一个默认的tabpanel */
title : '系统介绍',
html : '<div style="position:absolute;top:60;left:120;"><img src="/FMS/images/bg.jpg"/></div>'
},
listeners:{remove:function(tp,c){c.hide();}}/**作这个处理,为的是关闭一个tab后,再次打开时它还能显示出来*/
});
其次在树形节点增加onclick事件监听处代码改为
tree.on("click", function(node, e) {
if(node.isLeaf())


{
if(!mainTab.items.containsKey(node.id))
{ var tab = mainTab.add({
id : node.id,
title : node.text,
closable : true,layout : 'fit', items : [Ext.getCmp("flight_panel_"+node.id)]/**这里要注意()中的是extjs组件的id值,tabpanel增加的tab,他们的id值不可以一样,否则的话,只有激活的tab能显示该组件,其他tab就不能显示这个组件了**/
});
tab.doLayout() ;
mainTab.activate(tab);
}
else
{
mainTab.items.item(node.id).show();
}
}
});
注意这里的("flight_panel_"+node.id对应的是我的系统中包含在其他js文件中的ext组件的id值
[其他解释]
楼主能给发个源代码么???
[其他解释]
问题解决 谢谢楼主
[其他解释]
能给个代码学习一下吗?正在起步中...

读书人网 >Ajax

热点推荐