Данные не отображаются в мультиселекте после загрузки данных из магазина в extjs - PullRequest
0 голосов
/ 06 сентября 2011

Я пробовал это с двух дней, но не смог найти решение для этого. То, что я делаю, это удаленная загрузка данных в хранилище, вот мой код для этого:

var ds = Ext.create('Ext.data.ArrayStore', {
        proxy: {
        type: 'ajax',
        url : './index.php/firewall/loadRules',
        },      
        fields: ['value','text'],           
        totalProperty: 'num',  
        sortInfo: {
                    field: 'value',
                    direction: 'ASC'
                  }     
    }); 

    ds.load();

После этого назначение этого хранилища компоненту множественного выбора и кодов для этого здесь:

var form_number_list = Ext.create('Ext.form.Panel', {
        border: false,      
        bodyPadding: 5,
        id: 'form_number_list',
        width: '35%',
        height: '100%',
        flex: 3,
        items: [{
            anchor: '93%',
            xtype: 'multiselect',
            msgTarget: 'side',            
            name: 'multiselect',
            id: 'fire_select',
            allowBlank: false,
            minSelections: 1,
            maxSelections: 1,
            store: ds
        }]
    });

Ajax-вызов возвращает это значение:

[['012345', '012345'], ['012346', '012346'], ['01234567', '01234567'], ['546747', '546747'], ['54663', '54663'], ['546638', '546638'], ['46767638', '46767638'], ['63568545868', '63568545868'], ['6368688', '6368688'], ['35468488', '35468488'], ['84584845', '84584845'], ['56345738', '56345738'], ['533478', '533478'], ['583477', '583477'], ['563457548', '563457548'], ['53755438', '53755438'], ['53657648', '53657648'], ['5367764', '5367764'], ['563673673', '563673673'], ['5436638', '5436638'], ['46363773', '46363773'],]

Теперь после этого в браузере окно множественного выбора загружает столько элементов, но их значения не отображаются, то есть все элементы являются пустыми. В Firebug я вижу пустые теги "li" для всех предметов.

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Вы пропустили свойства отображения поля для вашего мультиселектора.Вам нужно будет добавить:

displayField: 'text',
valueField: 'value'

к вашему мультиселекту.Кроме того, имейте в виду, что лучше возвращать правильный json, а не массив, потому что, кажется, вы используете полное свойство.Вы можете использовать json следующим образом:

{"rows": [{"text" : "012345","value": "012345"},{"text": "012346","value": "012346"},{"text": "01234567","value": "01234567"},{"text": "546747","value": "546747"}],"num": 4}

Для этого вам придется использовать JsonStore, а не Array.Есть ли какая-то особая причина, по которой вы выбираете ArrayStore?

1 голос
/ 06 сентября 2011

Вы должны либо удалить root: 'data', из конфигурации магазина, либо изменить ответ сервера так, чтобы он выглядел следующим образом:

{data: [['012345', '012345'], ['012346', '012346'], /* ... */ ]}
...