2010-05-15 3 views
1

У меня есть панель инструментов Extjs ViewPort, которая содержит центральную панель, содержащую tablpanel, в которой я добавил gridpanel на одной вкладке, на этом я положил кнопку «Добавить человека» в tbar, что добавит новую вкладку FormPanel , в своей кнопке Reset я не могу получить доступ к Форме для ее сброса.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() и this.ownerCt.getForm(). reset() оба не работают ... – Sharad

+0

Когда вы говорите «не работает», добавьте _how_, то есть точную сообщение об ошибке, которое вы получаете (и используете консоль). И ownerCt - свойство, а не метод. См. Официальные документы для Extjs: http://www.extjs.com/deploy/dev/docs/ Но настоящая ошибка здесь заключается в том, что вы не используете FormPanel, а Panel с макетом форм. Вместо использования 'layout: 'form'' используйте' xtype:' form''. Это должно дать вам доступ к методу 'getForm()' –

+0

Спасибо, Шон, да сразу после изменения макета в xtype он работает. спасибо. – Sharad

Смежные вопросы