2011-09-19 19 views
5

Nella mia applicazione Extjs4 ho una griglia e un modulo.Extjs 4, moduli con caselle di controllo e loadRecord

Il modello utente:

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' }, 
}); 

e l'Agenzia:

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

Poi nella mia forma Sto creando le caselle:

[...] 
    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 
    }]; 
[...] 

tutto funziona bene per l'invio di modulo Ricevo tutti i dati e posso salvarli nel database.

Quando utente clicca sulla griglia il record viene caricato nella forma alla norma:

form.loadRecord(record); 

Il problema è che le caselle non sono controllati. Esistono convenzioni di denominazione per gli elementi casella di controllo in modo che Extjs possa rilevare cosa impostare? Come posso impostare le relazioni in modo che il modulo comprenda cosa controllare? O dovrei fare tutto a mano?

risposta

3

Nel modulo, si può fare qualcosa di simile:

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

ho aggiunto questo params a Casella di controllo ma niente cambia ... qual è esattamente il problema con le caselle di controllo sul modulo? – efirat

+0

il mio problema era che stavo usando xtype: 'textfield' con inputType: 'checkbox' che appariva funzionale ma non funzionava correttamente fino a quando non ho cambiato il xtype. grazie –

0

credo che si deve utilizzare someCheckbox.setValue(true) per controllare una casella di controllo in modo dinamico, o per deselezionare someCheckbox.setValue(false)

Problemi correlati