Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2014, 10:47
Новичок на форуме
Отправить личное сообщение для vadii Посмотреть профиль Найти все сообщения от vadii
 
Регистрация: 29.07.2014
Сообщений: 2

Проблема при использовании 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?

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2014, 01:47
Интересующийся
Отправить личное сообщение для Raydezm Посмотреть профиль Найти все сообщения от Raydezm
 
Регистрация: 01.12.2013
Сообщений: 26

Вы бы отформатировали бы код, а то так никто не возьмется.
И версия именно 4.0.0?
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2014, 02:01
Интересующийся
Отправить личное сообщение для Raydezm Посмотреть профиль Найти все сообщения от Raydezm
 
Регистрация: 01.12.2013
Сообщений: 26

Клиент то не знает какие ID будут присвоены этим элементам на сервере после синхронизации, мало ли.
И вообще internalId это весьма приватное свойство, есть кейсы где необходимо, но лучше использовать getId() ...... который должен вам вернуть как раз уже 'iddept', если не то - опишите ваш кейс.
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2014, 14:34
Новичок на форуме
Отправить личное сообщение для vadii Посмотреть профиль Найти все сообщения от vadii
 
Регистрация: 29.07.2014
Сообщений: 2

С фоматированием действительно неудобно получилось. Пробовал. Не работают сдвиги абзаца вправо в редакторе форума.

Относительно 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. На нее и перешел.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация при использовании модуля «request» в Node.js TorchTT Общие вопросы Javascript 3 19.05.2014 12:26
ошибка при использовании setAttribute FunBek Events/DOM/Window 8 02.04.2014 14:46
Проблема при получении данных из input Striker_ Events/DOM/Window 9 09.08.2012 00:32
Сумасшедшая утечка памяти в Opera при использовании javascript в IFRAME Маэстро Opera, Safari и др. 12 18.11.2010 12:29
Проблема при подключении яваскрипта cyberx AJAX и COMET 16 16.04.2010 16:13