javascript — ExtJs 4 MultiSelect Edit Form не загружает выборки

Мне нужна помощь по поводу комбинированного окна с множественным выбором в Extjs 4.

Мне нужно это в моих формах для простого отношения ManyToMany, разделенного центральной таблицей:

Пользователь -< User_Group> — группа.

Куда:

пользователь: id, имя, год

Группа пользователей: user_id, group_id

группа: id, имя

У меня нет проблем в форме создания пользователя, и я могу сохранить в базе данных по php все группы, которые я связал с помощью комбинированного списка.

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

Например:

Когда я пытаюсь редактировать этого пользователя (код JSON)

{
"id": 86,
"name": "tempname",
"year": 1492,
"groups_id": [1,2,3]
}

Форма редактирования заполнена всей информацией, а поле со списком отображается 1,2,3 , но ничего не выбрано в его выпадающем меню.

Это мой комбобокс:

{
xtype: 'combobox',
multiSelect: true,

name: 'groups_id',
fieldLabel: 'Group/s',

valueField: 'id',
displayField: 'name',

store: 'Groups',
allowBlank: false
}

Итак, почему ничего не выбирается при загрузке этой формы? И почему идентификаторы, которые я передаю для загрузки списка со списком (groups_id), не привязываются к нему?
Это неправильно структура JSON пользователя?

Я провел два дня на этом … и да … Я довольно новичок в ExtJs;)

1

Решение

Хорошо, мне удалось заставить вещи работать после нескольких бутербродов.

Проблема заключалась в том, что, когда я загружал запись для редактирования, record.get ( ‘groups_id’) был массив строка (например, [«1», «2», «3»]) в то время как Мне нужен массив целых (как это [1,2,3]).

Чтобы преобразовать / разобрать record.get ( ‘groups_id’) Я сделал это:

//from [ "1" , "2" , "3"] to [ 1 , 2 , 3]

//preparing an empty array for the parsed ids
var ids_integer = new Array();

//one by one, from string to int
record.get('groups_id').forEach( function(id){
ids_integer.push(parseInt(id));
});

//sobstitute the String Array with the Int Array
record.set('groups_id', ids_integer);

var view = Ext.widget('useredit');
view.down('form').loadRecord(record);   //finally load record in my form
0

Другие решения

Других решений пока нет …