JSON для загрузки значений в редактор сетки группы флажков extjs - PullRequest
1 голос
/ 02 ноября 2010

Мне нужно установить флажки CheckboxGroup со значениями, загруженными с помощью json из некоторого URL. Что такое правильный формат JSON?

Большое спасибо за помощь!

Обновление: я проясню свою проблему.

Я использую EditorGridPanel. Строки являются периодами. Есть столбцы Start_at, Finish_at, Region. Первое и второе - свидание, и с ними все в порядке. Проблема с Region, который на самом деле является CheckboxGroup с флажком для каждого дня недели - понедельник, вторник и т. Д. Итак:

Сначала я загружаю данные с сервера в хранилище

function setupDataSource() {
    row = Ext.data.Record.create([
        { name: 'start_at', type: 'string' },
        { name: 'finish_at', type: 'string' },
        { name: 'region', type: 'string' }
    ]);      

    store = new Ext.data.Store({
        url: '/country/195/periods',
        reader: new Ext.data.JsonReader(
            {
                root: 'rows',
                id: 'id'
            }, 
            row
        )
    });

    store.load();

}

URL-адрес: '/ страна / 195 / периоды' возвращает JSON:

{"rows": [{"region": {"cbvert_1": 1, "cbvert_2": 0, "cbvert_3": 1, "cbvert_4": 0, "cbvert_5": 1, "cbvert_6": 0, "cbvert_7": 1}, "start_at": "2010-10-17", "id": 1, "finish_at": "2010-10-28"}]}

Тогда я строю сетку:

function buildGrid() { 

    sm = new Ext.grid.RowSelectionModel();     
    cm = new Ext.grid.ColumnModel([

        // ... Start at and Finish at columns definition here ...

        { header: 'Region',
          dataIndex: 'region', 
            width: 150, 
            editor: new Ext.form.CheckboxGroup({    
            xtype: 'checkboxgroup',
        columns: 7,
        vertical: true,
        items: [
           {boxLabel: 'M', name: 'cbvert_1', inputValue: 1},
           {boxLabel: 'T', name: 'cbvert_2', inputValue: 1},
           {boxLabel: 'W', name: 'cbvert_3', inputValue: 1},
           {boxLabel: 'T', name: 'cbvert_4', inputValue: 1},
           {boxLabel: 'F', name: 'cbvert_5', inputValue: 1},
           {boxLabel: 'S', name: 'cbvert_6', inputValue: 1},
           {boxLabel: 'S', name: 'cbvert_7', inputValue: 1},
                    ]
                }),
            renderer: function(value) {}
        }]);  

     // ...

}

Итак, когда я нажимаю на ячейку сетки, мне нужно предварительно установить флажки со значениями, ранее сохраненными в базе данных. Теперь все флажки остаются пустыми, но должны быть 1010101, как в JSON.

Пожалуйста, укажите мне на ошибки или, возможно, какое-то решение. Любая помощь будет оценена. Большое спасибо!

1 Ответ

1 голос
/ 02 ноября 2010

Проверьте это: http://www.sencha.com/forum/showthread.php?47243-Load-data-in-checkboxgroup

Обновлен: Удалите объявление типа поля региона. Вам нужна не строка, а объект (из JSON). Так работает нормально :)

...