2016-04-01 1 views
-1

Ich versuche, ein Formular in einem benutzerdefinierten Zeilenraster ohne Erfolg zu rendern.Rendern eines Formulars in einer Rasterzeile

handler: function (button, record, pressed, eOpts) { 
     var grid = this.up('grid'); 
     var store = grid.getStore(); 

     var innerPanel = Ext.widget('form', { 
      //renderTo: record, 
      title: 'Title Test', 
      name: 'test',   
      items: [{ 
       xtype: "textfield", 
       name: "testfield", 
       fieldLabel: "FooTest" 
      }] 
     }); 

     // store.add(record); 
     store.add(innerPanel);   
} 

Irgendeine Idee, wie man das macht?

Fiddle: https://fiddle.sencha.com/#fiddle/183e

Dank.

BEARBEITET mit Taubi19-Absonderung.

Antwort

2

Ich denke, Sie verstehen die Konzepte noch nicht ganz. Das Formular ist Teil der Ansicht, das Geschäft ist ein Objekt, das sich um die Daten kümmert. Sie möchten eine Spalte haben, in der jede Zeile ein Formular ist. Das bedeutet, dass Sie eine Spalte benötigen, deren xtype kein Textfeld ist, sondern etwas Brauchbares. Ich habe auf Senchas kitchen sink herausgefunden, dass wir eine 'Widgetcolumn' brauchen. Ändern Sie in Ihrer Geige das Spalten-Array mit dem folgenden Code und Sie werden in jeder neuen Zeile ein Formular haben.

columns: [ {header: 'Name', dataIndex: 'name', flex: 1, xtype: 'widgetcolumn', widget: { width:400, xtype: 'form', items: [{ xtype: "textfield", name: "testfield", fieldLabel: "FooTest" }, { xtype: "textfield", name: "testfield1", fieldLabel: "FooTest1" }] }} ]

Und ich schlage vor, entfernen Sie das Formular in den Laden hinzufügen. Sie fügen Datensätze/Daten zu Speichern hinzu. Die store.add-Methode verwendet eine Modellinstanz als Parameter (Ext.data.Store.add).

+0

Dank taubi 19. Ich erkenne, dass das Rendern einer Form in einer Zeile ist etwas seltsam, aber manchmal einige Anwendungen sind anders als die üblichen und macht diese Art von Lösung sinnvoll (in diesem Fall wird das Formular nicht zum Senden von Daten verwendet der Server und wird dynamisch erstellt). Ich hatte eine Lösung mit Widgetcolumn versucht aber nur mit einem Feld, hatte nicht die Möglichkeit eines Formulars in Betracht gezogen. Ihre Antwort hilft, danke. – josei