Extjs 4, формы с флажками и loadRecord - PullRequest
5 голосов
/ 19 сентября 2011

В моем приложении Extjs4 у меня есть сетка и форма.

Модель пользователя:

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

И Агентство:

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

Тогда в моей форме я создаю флажки:

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

Все работает хорошо для отправки формы. Я получаю все данные и могу сохранить их в базе данных.

Когда пользователь нажимает на сетку, запись загружается в форму со стандартом:

form.loadRecord(record);

Проблема в том, что флажки не установлены. Существуют ли какие-либо соглашения об именах для элементов флажков, чтобы Extjs мог определить, что установить? Как я могу настроить отношения, чтобы форма поняла, что проверять? Или мне все делать вручную?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

В вашей форме вы можете сделать что-то вроде этого:

{
   xtype: 'checkboxfield',
   name: 'test',                                
   boxLabel: 'Test',
   inputValue: 'true',
   uncheckedValue: 'false'
}
0 голосов
/ 18 апреля 2012

Я считаю, что вы должны использовать someCheckbox.setValue(true), чтобы динамически установить флажок, или снять флажок someCheckbox.setValue(false)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...