2011-09-19 9 views
5

W mojej aplikacji Extjs4 mam siatkę i formularz.Extjs 4, formularze z polami wyboru i loadRecord

Model użytkownika:

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

i Agencji:

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

Wtedy w moim formularzu Tworzę pola wyboru:

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

wszystko działa dobrze do wysyłania formularza Otrzymuję wszystkie dane i mogę je zapisać w bazie danych.

Gdy użytkownik kliknie na siatce rekord jest załadowany w postaci ze standardem:

form.loadRecord(record); 

Problemem jest to, że pola wyboru nie są sprawdzane. Czy są jakieś konwencje nazewnictwa dla elementów pola wyboru, aby Extjs mógł wykryć, co ustawić? Jak mogę ustawić relacje, aby formularz zrozumiał, co należy sprawdzić? Czy powinienem zrobić wszystko ręcznie?

Odpowiedz

3

W swojej formie, można zrobić coś takiego:

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

dodałem tego params do checkbox ale nic zmień ... jaki jest dokładnie problem z checkboxami w formularzu? – efirat

+0

Mój problem polegał na tym, że używałem xtype: 'textfield' z inputType: 'checkbox', które wyglądało na funkcjonalne, ale nie działało poprawnie, dopóki nie zmieniłem xtype. Dziękuję Ci –

0

wierzę trzeba użyć someCheckbox.setValue(true) sprawdzić pole wyboru dynamicznie lub odznaczyć someCheckbox.setValue(false)

Powiązane problemy