问题描述
我想实现的功能很简单在panel的item里移除掉一个gridpanel然后再加上另外一个gridpanel,最后重新布局 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个itemExt.getCmp('NewsView').add(grid1);Ext.getCmp('NewsView').doLayout(true); //这句话会报错,如果注释掉就没问题 但是panel没有重新布局alert(Ext.getCmp('NewsView').items.length); // 如果上面一句话注释掉就是2个chrome下报错:Uncaught TypeError: Cannot read property 'style' of undefinedExt.Element.addMethods.setLeftTopext-all.js:7Ext.BoxComponent.Ext.extend.setPositionext-all.js:7Ext.layout.BorderLayout.Region.applyLayoutext-all.js:7Ext.layout.BorderLayout.Ext.extend.onLayoutext-all.js:7Ext.layout.ContainerLayout.Ext.extend.layoutext-all.js:7Ext.Container.Ext.extend.doLayoutff报错:b.dom is undefinedie报错:'dom.style' 为空或不是对象基本意思是说没有定义style,哪里要定义style啊,这个extjs我才接触几天啊肿么办啊?删除panel前加了panel后 问题补充:AngelAndAngel 写道
解决方案
整个界面用的border布局,我要删除的组件位置确实是center那我现在该怎么办呢? 要么你就把tree组件放到“center”的位置,这样把grid放到“east”的位置,要么,保持center不变,但必须用一个容器占据“center”的位置,grid添加到该容器里面,这样就保证你删除grid,center位置的组件还在。
解决方案二:
你整个界面采用什么布局?如果你采用border布局的话,位于“center”位置的组件你不能删除!
解决方案三:
NewsView 有没有父组件,有的话,把引用Ext.getCmp('NewsView').doLayout(true); 中的 NewsView 改为它的父组件的名称试一下看看呢
解决方案四:
我的意思是style在ext底层是用了的。
解决方案五:
别的浏览器不错吧。chrome这玩意就是容易莫名其妙啊。
解决方案六:
'style' 在chrome浏览器不识别啊 ,你设置了或者引用了也没用啊