2011-05-04 11 views
6

Estoy intentando rellenar dinámicamente un FormPanel ExtJs desde un registro de almacén de datos. Cuando el usuario hace clic en una fila en el GridPanel, se invoca el método buildForm y el registro cliqueado se envía como el primer arg.ExtJs construye dinámicamente un panel de formulario desde un registro de almacén de datos

Parece que el código siguiente (cuando se realiza la depuración) funciona, pero el método doLayout no tiene ningún efecto.

¿Alguien puede indicarme la dirección correcta?

mymodule = Ext.extend(Ext.FormPanel, { 
    forceLayout: true, 
    initComponent: function() { 
     Ext.applyIf(this, { 
      id: Ext.id(), 
      labelWidth: 75, 
      defaultType: 'textfield', 
      items: [{ 
       layout: 'form', 
       items: [{ 
        fieldLabel: 'test', 
        xtype: 'textfield' 
       }, { 
        fieldLabel: 'test', 
        xtype: 'textfield' 
       }] 
      }] 
     }); 
     mymodule.superclass.initComponent.call(this); 
    }, 
    buildForm: function (record, c) { 
     var form = this.getForm(); 

     var formItems = new Ext.util.MixedCollection(); 

     Ext.each(record.fields.items, function (item) { 
      formItems.add(new Ext.form.TextField({ 
       labelStyle: 'width:100px', 
       fieldLabel: item.name, 
       name: item.dataIndex, 
       id: 'field-' + item.name 
      })); 
     }, this); 

     form.items = formItems; 

     this.doLayout(false, true); 

     form.loadRecord(record); 
    } 
}); 

Respuesta

5

La forma correcta de agregar componentes a la forma sería utilizar el método add(). Si su formulario ya está procesado, use el método add() y luego llame al doLayout().

lo que es posible que desee probar esto:

form.add(formItems); 
form.doLayout(false,true); 
form.loadRecord(record); 
+0

gracias, en ese caso, ¿cuál es la forma correcta de eliminar los elementos? Como necesito borrar el formulario primero – Dve

+0

, puede usar los métodos 'remove()' o 'removeAll()' para eliminar componentes del formulario –

Cuestiones relacionadas