在Ext JS中添加或替换新面板到窗口内部

时间:2011-01-26 10:01:43

标签: javascript extjs


问题已经解决, 不管怎样,谢谢:)


我有一个Ext.Window对象。 类似的东西:

var mypanel= new Ext.Panel({title:'Placeholder'});
var cwin = new Ext.Window({
    layout:'fit',
    width:screen.width-200,
    x:200,
    y:150,
    draggable: false,
    closable: false,
    resizable: false,
    plain: true,
    border: false,
    items: [mypanel]
});

当用户触发特定事件时,我正在尝试将“mypanel”替换为另一个Ext.Panel对象。 所以我想我可以删除mypanel而不是添加一个新的面板。 我得到了删除工作。 然而,添加是一个不同的故事, 我已经尝试了以下方向:

mypanel= new Ext.Panel({title:'my new Panel'});
cwin.add(mypanel); //dit nothing
cwin.items.add(mypanel); //dit nothing
cwin.insert(0,mypanel); //dit nothing
cwin.items.insert(0,mypanel); //dit nothing

对于替换现有面板或添加新面板的任何答案,我都会感到满意。

谢谢。

1 个答案:

答案 0 :(得分:3)

添加项目后,您应该在容器上调用doLayout()。

// remove actual contents
cwin.removeAll();
// add another panel
cwin.add( new Ext.Panel({title:'my new Panel',width:300,height:400}) )
// repaint with new contents
cwin.doLayout();

应该做的伎俩