ExtJS:删除FormPanel并将其读入窗口

时间:2011-08-15 12:01:04

标签: extjs3 formpanel

我遇到了一个问题,我想从窗口中删除FormPanel。

这是我在窗口中加载的表单:

myForm = new Ext.FormPanel({
    frame: true,
    width: '100%',
    id: 'myform',
    layout: 'form',
    autoHeight: true,
    autoDestroy: false,
    region: 'center',
    monitorValid: true,
    items: [{
        xtype: 'textfield',
        id: 'mytextfield',
        fieldLabel: 'My Label',

    }]
 });

MyWindow =  new Ext.Window({
  title: 'MyWindow',  
    layout: 'auto',
    resizable: false,
  width: 717, 
    autoheight:true,
  id:'mywindow',
    closeAction:'hide',
  closable: true,
    items:[Ext.getCmp("myform")]


  });

现在我要删除此表单,并且必须显示另一个表单,我在其他地方这样做:

MyWindow.removeAll();
MyWindow.add(Ext.getCmp("myAnotherForm"));

但是这在ext-all-debug.js中给了我错误"Uncaught TypeError: Cannot read property 'events' of undefined"

有没有什么,我在这里失踪了?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码删除表单并添加其他表单:

Ext.onReady(function() {
    var btn = new Ext.Button({
        id : 'button',
        width : 100,
        height : 30,
        text : 'click me',
        listeners : {
            click : function(){
                var myanother = myAnotherForm;
                var anotherbtn = btn1;
                Mywindow.removeAll();
               Mywindow.add(myanother);
                Mywindow.add(anotherbtn);
                Mywindow.doLayout();
            }
        }
    });
    var btn1 = new Ext.Button({
        id : 'button1',
        width : 100,
        height : 30,
        text : 'Another button'
    });
    myAnotherForm = new Ext.FormPanel({
    frame: true,
    width: '100%',
    id: 'myanotherform',
    layout: 'form',
    autoHeight: true,
    autoDestroy: false,
    region: 'center',
    monitorValid: true,
    items: [{
        xtype: 'textfield',
        id: 'mytextfield',
        fieldLabel: 'My Another Label',
    }]
 });    
    myForm = new Ext.FormPanel({
    frame: true,
    width: '100%',
    id: 'myform',
    layout: 'form',
    autoHeight: true,
    autoDestroy: false,
    region: 'center',
    monitorValid: true,
    items: [{
        xtype: 'textfield',
        id: 'mytextfield',
        fieldLabel: 'My Label',
    }]
 });    
    var Mywindow = new Ext.Window({  
        title: 'MyWindow',       
        layout: 'auto',    
        resizable: false,  
        width: 317,     
        autoheight:true,   
        id:'mywindow',     
        closeAction:'hide',   
        closable: true,
        items : [myForm,btn]    
    });
    Mywindow.show();
});

上述工作样本如下:

http://jsfiddle.net/kesamkiran/MVewR/1/

    * Click on 'click me' button then you will get the another form with another button.If you want to change only form,then you can remove the button.