2010-05-15 56 views
1

我有Extjs ViewPort面板,其中包含中心面板,其中包含tablpanel,其中我已经在一个选项卡中添加gridpanel,对此我已添加'添加人'按钮的tbar,将添加一个FormPanel的新选项卡,在其重置按钮中,我无法访问表单来重置它。ExtJs获取从按钮单击动态创建的FormPanel。

做任何机构都面临同样的问题...请帮助如何让它工作。

 
Ext.onReady(
    function(){ 
     // Ext.get(document.body, true).toggleClass('xtheme-gray'); 

     var myBorderPanel 
      = new Ext.Viewport({ 
       title: 'Software Releases', 
       // renderTo: document.body, 

       renderTo: Ext.getBody(), 
       layout: 'border', 
       id: 'main', 
       items: [ 
        { 
         title: 'Center Region', 
         region: 'center',  // center region is required, no width/height specified 
         tbar: [ 
          { 
           text: 'Add person', // only when user have write priovilege. 
           handler: function() { 
            var tabpanel = Ext.getCmp('main').findById('tabs'); 

            var wtab = tabpanel.add({ 
             //  // var addrelease_win = new Ext.Window({ 
             url: 'reledit-submit.json', 
             id:  'addform0', 
             // height: 300, width: 400, 
             layout: 'form', 
             frame: true, 
             title: 'Add New Release', 
             closable: true, 

             items: [ 
              { xtype: 'textfield', fieldLabel: 'Name' } 


             buttons: [{ 
              text: 'Save', 
              scope: wtab, 
              handler: function() { 
               wtab.getForm().submit({ 
                success: function(f,a) { 
                 Ext.Msg.alert('Success', 'It worked'); 
                }, 
                failure: function(f,a){ 
                 Ext.msg.alert('Warnning', 'Error'); 
                } 
               }); 
              } 
             },{ 
              text: 'Reset', 
              scope: wtab, 
              handler: function() { 
               // Ext.getCmp('addform0').getForm().reset(); 
               // tabpanel.getActiveTab.reset(); 
               // Ext.getCmp('main').findById('addform').getForm().reset(); 
               // this.getForm().reset(); 
               // this.getForm().reset(); 
               // Ext.Msg.alert('sdfsd', 'asdfsd ' + Ext.getCmp('addform0').getValue() + ' sdfsd'); 
               this.findById('addform0').getForm().reset(); 
               // Ext.Msg.alert('sdfsd', 'asdfsd '); 
              } 
             }] 

            }); 
            // addrelease_win.show(); 

            tabpanel.activate(tabpanel.items.length - 1); 
           } 
          } 
         ], 
         xtype: 'tabpanel', 
         id:  'tabs', 
         activeTab: 0, 
         items: [{ 
          title: 'Data', 
          xtype: 'editorgrid', 
          store: store, 
          stripeRows: true, 
          // autoExpandColumn: 'title', 
          columns: [ 
           {header: "Name"   , dataIndex: "name"  , width: 50, sortable: true}, 
           {header: "DOB", dataIndex: "dob" , sortable: true} 
          ], 
          }) 
         }], 
         margins: '5 5 0 0' 
        } 
       ] 
      }); 

    } 

回答

3

不是wtab.getForm().reset();是否工作?

如果没有,请使用this.ownerCt访问按钮容器,然后沿着链条向上走,直到您可以访问表单。

UPDATE

真正的问题是,它与所创建,而不是一个FormsPanel形式布局的面板。

layout:'form'更改为xtype:'form'和.getForm()应该工作。

+0

肖恩感谢您的帮助,wtab.getForm.reset()不工作, 我是很新的ExtJS的INFACT的JavaScript, 不知道如何准确使用this.ownerCt 但我已经试过这一点。 ownerCt()。getForm()。reset() and this.ownerCt.getForm()。reset()两者都不起作用... – Sharad 2010-05-18 08:27:03

+0

当您说'不工作'时,请添加_how_,也就是说,错误信息(并使用控制台)。 ownerCt是一个属性,而不是一个方法。请参阅Extjs的官方文档:http://www.extjs.com/deploy/dev/docs/ 但是,真正的错误在于您没有使用FormPanel,而是使用表单布局的Panel。而不是使用'layout:'form',使用'xtype:'form''。这应该让你访问'getForm()'方法 – 2010-05-18 11:01:19

+0

感谢肖恩,是的,在将布局更改为xtype后立即工作。 非常感谢。 – Sharad 2010-05-18 11:38:21