2014-10-07 2 views
0

мне нужна помощь о комбинированном окне с многократными выбрать в ExtJS 4.ExtJs 4 MultiSelect Редактировать форму не загрузка выделенных

мне это нужно в моих формах для простого ManyToMany отношения расщепленного центральным столом:

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

Где:

Пользователь: идентификатор, имя, год

user_group: user_id, group_id

Группа: идентификатор, имя

У меня нет никаких проблем в форме создания пользователя, и я могу сохранить в databse по 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 
} 

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

Я прошел два дня на этом ... и да ... Я довольно новыми для ExtJS;)

ответ

0

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

Проблема заключалась в том, что, когда я загрузке запись для редактирования, record.get ('groups_id') был массив строки (например, [ "1", "2", "3" ]) while Мне нужен массив целых чисел (вроде этого [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 
Смежные вопросы