我需要一些有关 Extjs 4 中具有多重选择的组合框的帮助。
我的表单中需要它来实现由中心表分割的简单多对多关系:
用户 -< User_Group >- 组。
地点:
用户:ID、姓名、年份
用户组: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 没有真正绑定(bind)到它? 用户的json结构错误?
我已经为此花费了两天时间...是的...我对 ExtJs 还很陌生;)
最佳答案
好吧,我吃了一些三明治后就成功了。
问题是,当我加载要编辑的记录时,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
关于javascript - ExtJs 4 多选编辑表单不加载选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235017/