2011-09-19 26 views
5

En mi aplicación Extjs4 tengo una grilla y un formulario.Extjs 4, formularios con casillas de verificación y loadRecord

El modelo de usuario:

Ext.define('TestApplication.model.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id', type: 'int', useNull: true }, 
     { name: 'email', type: 'string'}, 
     { name: 'name', type: 'string'}, 
     { name: 'surname', type: 'string'} 
    ], 
    hasMany: { model: 'Agency', name: 'agencies' }, 
}); 

y la Agencia:

Ext.define('Magellano.model.Agency', { 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int', useNull: true}, 
    {name: 'name', type: 'string'} 
    ] 
}); 

Luego, en mi forma estoy creando las casillas de verificación:

[...] 
    initComponent: function() { 
    var store = Ext.getStore('Agencies'); 
    var checkbox_values = {xtype: 'checkboxfield', name: 'agencies[]'}; 
    var checkboxes = [] 

    store.each(function(record){ 
     var checkbox = {xtype: 'checkboxfield', name: 'agency_ids', 
         boxLabel: record.get('name'), inputValue: record.get('id')}; 
     checkbox.checked = true; 
     checkboxes.push(checkbox) 
    }); 
    this.items = [{ 
     title: 'User', 
     xtype: 'fieldset', 
     flex: 1, 
     margin: '0 5 0 0', 
     items: [{ 
     { xtype: 'textfield', name: 'email', fieldLabel: 'Email' }, 
     { xtype: 'textfield', name: 'name', fieldLabel: 'Nome' }, 
    }, { 
     title: 'Agencies', 
     xtype: 'fieldset', 
     flex: 1, 
     items: checkboxes 
    }]; 
[...] 

todo funciona bien para el envío de formulario Estoy recibiendo todos los datos y puedo guardarlos en la base de datos.

Cuando el usuario hace clic en la red el registro se carga en la forma con la norma:

form.loadRecord(record); 

El problema es que las casillas de verificación no se comprueban. ¿Existen convenciones de nomenclatura para los elementos de casilla de verificación para que Extjs pueda detectar qué configurar? ¿Cómo puedo configurar las relaciones para que el formulario comprenda qué revisar? ¿O debería hacer todo a mano?

Respuesta

3

En su formulario, puede hacer algo como esto:

{ 
    xtype: 'checkboxfield', 
    name: 'test',         
    boxLabel: 'Test', 
    inputValue: 'true', 
    uncheckedValue: 'false' 
} 
+1

he añadido este params a checkbox pero nada cambiar ... ¿cuál es exactamente el problema con las casillas de verificación en el formulario? – efirat

+0

mi problema era que estaba usando xtype: 'textfield' con inputType: 'checkbox' que parecía funcional pero no funcionaba correctamente hasta que cambié el xtype. gracias –

0

Creo que usted tiene que utilizar someCheckbox.setValue(true) para comprobar una casilla de verificación dinámica, o para desmarcar someCheckbox.setValue(false)

Cuestiones relacionadas