2012-08-13 10 views
6

ja mam:ExtJS - Formularz złożyć kod

win = desktop.createWindow({ 
    id: 'admin-win', 
    title: 'Add administration users', 
    width: 740, 
    height: 480, 
    iconCls: 'icon-grid', 
    animCollapse: false, 
    constrainHeader: true, 
    xtype: 'form', 
    bodyPadding: 15, 
    url: 'save-form.php', 
    items: [{ 
     xtype: 'textfield', 
     fieldLabel: 'Field', 
     name: 'theField' 
    }], 

    buttons: [{ 
     text: 'Submit', 
     handler: function() { 
      var form = this.up('form').getForm(); 
      if (form.isValid()) { 
       form.submit({ 
        success: function (form, action) { 
         Ext.Msg.alert('Success', action.result.message); 
        }, 
        failure: function (form, action) { 
         Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
        } 
       }); 
      } 
     } 
    }] 
}); 

i przyciski nie działają. Tworzy błąd - this.up ("formularz") jest niezdefiniowany. Jak wywołać funkcję getForm() w takim kodzie?

AKTUALIZACJA: Dzięki za szybką odpowiedź! I zmodyfikowany kod dla moich potrzeb, to jest to, i to działa z pulpitu Przykład:

win = desktop.createWindow({ 
    id: 'admin-win', 
    title: 'Add administration users', 
    width: 740, 
    iconCls: 'icon-grid', 
    animCollapse: false, 
    constrainHeader: true, 
    items: [{ 
     xtype: 'form', 
     bodyPadding: 15, 
     url: 'save-form.php', 
     items: [{ 
      xtype: 'textfield', 
      fieldLabel: 'Field', 
      name: 'theField' 
     }], 

     buttons: [{ 
      text: 'Submit', 
      handler: function() { 
       var form = this.up('form').getForm(); 
       if (form.isValid()) { 
        this.up().up().submit({ 
         success: function (form, action) { 
          Ext.Msg.alert('Success', action.result.message); 
         }, 
         failure: function (form, action) { 
          Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
         } 
        }); 
       } 
      } 
     }] 
    }] 
}); 
+0

Jest to kompletny kod? Co robi desktop.createWindow? Pytam o to, ponieważ wydaje się, że próbujesz utworzyć okno, ale używając opcji Ext.form.Panel. – davidbuzatto

+0

Jest oparty na przykładzie Desktopa ExtJS. Chcę utworzyć okno tylko z formularzem. –

+0

Skopiujesz ten kod? – davidbuzatto

Odpowiedz

5

Jak już powiedziałem, wydaje się, że masz problemy z Twojego kodu. Przekazujesz opcje Ext.form.Panel do Ext.window.Window (zakładam, że to nazwa metody, którą wywołujesz). Piszę przykład z oknem dla ciebie. Chwileczkę.

Jest gotowy. Spójrz:

Ext.create('Ext.window.Window', { 
    title: 'This is a Window with a Form', 
    height: 200, 
    width: 400, 
    layout: 'fit', 
    items: [{ // the form is an item of the window 
     id: 'admin-win', 
     title: 'Add administration users', 
     width: 740, 
     height: 480, 
     iconCls: 'icon-grid', 
     animCollapse: false, 
     constrainHeader: true, 
     xtype: 'form', 
     bodyPadding: 15, 
     url: 'save-form.php', 
     items: [{ 
      xtype: 'textfield', 
      fieldLabel: 'Field', 
      name: 'theField', 
      allowBlank: false 
     }], 
     buttons: [{ 
      text: 'Submit', 
      handler: function() { 
       var form = this.up('form').getForm(); 
       if (form.isValid()) { 
        form.submit({ 
         success: function(form, action) { 
          Ext.Msg.alert('Success', action.result.message); 
         }, 
         failure: function(form, action) { 
          Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
         } 
        }); 
       } else { 
        Ext.Msg.alert("Error!", "Your form is invalid!"); 
       } 
      } 
     }] 
    }] 
}).show(); 

jsFiddle: http://jsfiddle.net/davidbuzatto/vWmmD/

+0

Dzięki :-) Zaktualizowałem swój pierwszy wpis, ponieważ nie mam uprawnień do udzielania odpowiedzi na moje tematy ;-) Muszę zmodyfikować kod do moich potrzeb. –

+0

Nie ma za co! Jak już powiedziałem, rzeczywiście przechodzisz do Ext.form.Panel z opcją Ext.window.Window :) ExtJS jest bardzo miły. Zapoznaj się z jego dokumentacją, ponieważ jest bardzo kompletna. – davidbuzatto