ExtJs 4 MultiSelect编辑表单不会加载选择

时间:2014-10-07 11:31:33

标签: javascript php extjs combobox multi-select

我需要一些关于Extjs 4中具有多个select的组合框的帮助。

我需要在我的表单中使用由中央表分割的简单ManyToMany关系:

用户 - < User_Group> - Group。

其中:

用户:ID,姓名,年份

User_Group :user_id,group_id

群组:ID,姓名

我在用户的创建形式中没有问题,我可以通过php保存到数据库所有组关联的数据库。

现在,我有一个包含所有用户的网格,当我尝试开始编辑其中一个时,组合框的选择没有加载,但组合框的字段显示了更正的选择的ID。

例如:

当我尝试编辑此用户(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表格的负载上没有选择任何东西?为什么我传递的ID加载组合框(groups_id)并没有真正绑定到它? 用户的json结构是错误的吗?

我已经过了两天......是的......我对ExtJs很新;)

1 个答案:

答案 0 :(得分:0)

好的,我设法让一些三明治后的东西正常工作。

问题在于,当我加载要编辑的记录时, record.get(' groups_id')是一个字符串的数组(例如[" 1"," 2"," 3"])而我需要一个整数数组(像这样[1] 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