我想实现的功能很简单
在panel的item里移除掉一个gridpanel然后再加上另外一个gridpanel,最后重新布局
[code="java"]
alert(Ext.getCmp('NewsView').items.length); //2个item
//移除当前panle 加载另一个panel
Ext.getCmp('NewsView').remove('NewsGrid');
//随便整个panel
var data1=[ [1, 'asdasd', 'asdasd'],
[2, 'asxcvbcv', 'asdwqdasd'] ];
var store1=new Ext.data.SimpleStore({data:data1,fields:["id","name","mina"]});
var grid1 = new Ext.grid.GridPanel({
title:"title",
height:150,
width:500,
columns:[{header:"sawayika",dataIndex:"name"},
{header:"yisilan",dataIndex:"mina"}],
store:store1,
});
alert(Ext.getCmp('NewsView').items.length); //1个item
Ext.getCmp('NewsView').add(grid1);
Ext.getCmp('NewsView').doLayout(true); //这句话会报错,如果注释掉就没问题 但是panel没有重新布局
alert(Ext.getCmp('NewsView').items.length); // 如果上面一句话注释掉就是2个
[/code]
chrome下报错:[b][color=red]Uncaught TypeError: Cannot read property 'style' of undefined
Ext.Element.addMethods.setLeftTopext-all.js:7
Ext.BoxComponent.Ext.extend.setPositionext-all.js:7
Ext.layout.BorderLayout.Region.applyLayoutext-all.js:7
Ext.layout.BorderLayout.Ext.extend.onLayoutext-all.js:7
Ext.layout.ContainerLayout.Ext.extend.layoutext-all.js:7
Ext.Container.Ext.extend.doLayout[/color][/b]
ff报错:[b][color=red]b.dom is undefined[/color][/b]
ie报错:[b][color=red]'dom.style' 为空或不是对象[/color][/b]
基本意思是说没有定义style,哪里要定义style啊,这个extjs我才接触几天啊
肿么办啊?
删除panel前
[img]http://dl.iteye.com/upload/attachment/546282/6c5996e4-7fc9-3209-b51f-6c9bac192c7d.jpg[/img]
加了panel后
[img]http://dl.iteye.com/upload/attachment/546284/7f51db29-a305-3616-8352-e4d19d77cba8.jpg[/img]
[code="java"]
整个界面用的border布局,我要删除的组件位置确实是center
那我现在该怎么办呢?
[/code]
要么你就把tree组件放到“center”的位置,这样把grid放到“east”的位置,要么,保持center不变,但必须用一个容器占据“center”的位置,grid添加到该容器里面,这样就保证你删除grid,center位置的组件还在。
'style' 在chrome浏览器不识别啊 ,你设置了或者引用了也没用啊
别的浏览器不错吧。
chrome这玩意就是容易莫名其妙啊。
我的意思是style在ext底层是用了的。
NewsView 有没有父组件,有的话,把[quote]Ext.getCmp('NewsView').doLayout(true); [/quote]中的 NewsView 改为它的父组件的名称试一下看看呢
你整个界面采用什么布局?如果你采用border布局的话,位于“center”位置的组件你不能删除!