ExtJs 4多选编辑表单没有't负载选择

ExtJs 4 MultiSelect Edit Form doesn't load selections

本文关键字:选择 负载 编辑 表单 ExtJs      更新时间:2023-09-26

我需要一些关于Extjs 4中多选组合框的帮助。

我需要它在我的表单中,用于一个由中心表分割的简单ManyToMany关系:

用户-<User_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
}

那么,为什么在加载表单时没有选择任何内容呢?为什么我用来加载组合框(groups_id)的id没有真正绑定到它?用户的json结构是错误的?

我已经为此度过了两天。。。是的。。。我对ExtJs很陌生;)

好吧,吃了一些三明治后,我设法把事情做好了。

问题是,当我加载要编辑的记录时,record.get('group_id')string的数组(例如["1","2","3"]),而我需要一个整数的数组(如图[1,2,3])。

为了转换/解析记录.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