Проблема при использовании Store.add()
Добрый день.
Использую ext-4.0.0. Задача: сформировать содержание Grid.Panel из данных, частично полученных с сервера через AJAX, а частично прямо из кода, программно. Фрагмент кода: Ext.define('ActionDepartModel', { extend: 'Ext.data.Model', idProperty: 'iddept', fields: [{ name: 'title', type: 'string' }] }); Ext.define('ActionDepartStore', { extend: 'Ext.data.Store', autoLoad: false, model:'ActionDepartModel', proxy: { type: 'ajax', url: 'action.php' } }); Ext.define('ActionDepartListPanel', { extend: 'Ext.grid.Panel', alias: 'widget.ActionDepartListView', autoScroll: true, region:'center', store: Ext.create('ActionDepartStore'), title: 'Подразделения', hideHeaders: true, selModel: { mode: 'MULTI' }, columns: [{ flex: 1, dataIndex: 'title' }] }); При выполнении ActionDepartListPanel.getStore().load() в Store формируется массив данных типа [ {internalId:1, data.title:'подразделение 1'}, {internalId:2, data.title:'подразделение 2'}, {internalId:3, data.title:'подразделение 3'} ] И это хорошо. При выполнении ActionDepartListPanel.getStore().add( {iddept:4, title:'подразделение 4'}, {iddept:5, title:'подразделение 5'} ); в Store формируется массив данных типа [ {internalId:1, data.title:'подразделение 1'}, {internalId:2, data.title:'подразделение 2'}, {internalId:3, data.title:'подразделение 3'}, {internalId:'ext-record-1', data.title:'подразделение 4'}, {internalId:'ext-record-2', data.title:'подразделение 5'} ] Вопрос: как в коде, программно (без обращения к серверу) добавить записи в Store так, чтобы у них сформировались нормальные internalId, из поля, описанного в Model.idProperty? Спасибо. |
Вы бы отформатировали бы код, а то так никто не возьмется.
И версия именно 4.0.0? |
Клиент то не знает какие ID будут присвоены этим элементам на сервере после синхронизации, мало ли.
И вообще internalId это весьма приватное свойство, есть кейсы где необходимо, но лучше использовать getId() ...... который должен вам вернуть как раз уже 'iddept', если не то - опишите ваш кейс. |
С фоматированием действительно неудобно получилось. Пробовал. Не работают сдвиги абзаца вправо в редакторе форума.
Относительно InternalId и прочих неровносте в коде - не главное это. Главное: не удалось подсунуть в GridPanel.getStore().add() свои данные, чтобы он их нормально (предсказуемо) отработал. Получилось через GridPanel.getStore().add(GridPanel_2.getSelectionM odel().getSelection().copy()). Для информации. Мною решалась довольнно часто используемая задача: из одного списка выбрать несколько значений и внисти в другой список. Списки можно формировать через Grid.Panel. Эта задача уже реализована через Ext.ux.form.MultiSelect и Ext.ux.form.ItemSelector. Но реализована как-то очень громоздко. Пришлось эту задачу решить по-своему. И еще. В такой задаче часто нужно использовать группировку значений через Ext.grid.feature.Grouping. Так вот в версии <=4.2.2 эта группировка не работает. Проверено. Работает на 5.0.0. На нее и перешел. |
Часовой пояс GMT +3, время: 19:39. |