目前我有一个TabPanel.假设当前有两个Tab好了.tabA和tabB.
[code="js"]
var tabA = new Ext.Panel({
contentEl:'divA'
});
var tabB = new Ext.Panel({
contentEl:'divB'
});
var tabPanel = new Ext.TabPabel({
deferredRender: false,
activeTab: 0,
enableTabScroll:true,
defaults: {autoScroll:true},
viewConfig: {forceFit: true},
plugins: new Ext.ux.TabCloseMenu()
});
[/code]
我是通过触发别的点击的将tabA和tabB加入进来的,加入的时候没问题,是OK的.
[code="js"]
// 加入tab前,先判断它是否存在.如果已存在.则激活它但不创建;
// 如果tab不存在,则创建它,并使之处于激活状态
var tab = tabPanel .getComponent(currentTabId);
if(!tab)
{
// 在中央面板上创建新主题
tabPanel.add(tab);
}
tabPanel.setActiveTab(tab);
[/code]
这样,通过以上以上的代码,我的TabPanel上将会有两个tab: tabA和tabB.
[color=darkblue]值得注意的是.tabA和tabB都有contentEl属性.
分别指定了jsp上的
然后我点击其中某一个tab上的XX按钮将其关闭.OK.正常.
[color=darkblue]接着我再通过点击事件创建刚关闭的tab.就出问题了.[/color]
[color=red]出的错是:
Ext.fly(ce) is null
http://{myproject:port}/ext/ext-all-debug.js
Line 22107[/color]
[color=darkblue]我十分确定是contentEl属性的原因.
因为我将这属性注释掉,创建,删除,再创建tab,是没问题的.[/color]
-----------------------------------我是分割线----------------------------------
以上是一个问题,很关键,很重要.
因为我觉得下面这个问题和它有莫大的关系.
呃...是酱紫的~
小弟我在用fusionchart做报表.
还是上面说的tabPanel.
当前有两个tab.每一个tab都有contentEl对应jsp上的div.
这个div我是用来显示图形的...
大致的代码如下:
[code="js"]
var chart = new FusionCharts("MSColumn3DLineDY.swf", "ChartId", "100%", "100%");
Ext.Ajax.request({
url :'myAction!method.action',
success :function(result,request){
chart.setDataXML(eval('('+result.responseText+')').chartXml);
// 将fusioncharts渲染到jsp中的div中
chart.render("divA");
}
});
var tabA = new Ext.Panel({
// 这个panel包含jsp上的一个的div
contentEl:'divA'
});
[/code]
OK.代码就是那样子..我们创建一个tab,OK.关闭它,OK.
[color=red]再创建...问题来了,ff报错是:
n is null
http://{myproject:port}/fusioncharts/JSClass/FusionCharts.js
Line 234[/color]
我觉得啊..因为有第一个错,所有导致了第二个错同时发生.
而第一个错为什么会发生呢,就是因为[color=red]它contentEl了一个div.
当这个tab被删除之后,相应的div也随之没了??[/color] 这是我的猜想...
[color=red]所以再次创建的时候,要contentEl那个div,但是已经没了,就出错.[/color]
这是我的猜想,不知道对不对.
当前我还没想到好的解决办法.请GG们给我点明示...