javascript - ExtJs 4 多选编辑表单不加载选择

标签 javascript php extjs combobox multi-select

我需要一些有关 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/

相关文章:

javascript - ReactJS:在包含ajax调用的.map()语句完成后执行代码

java - 如何动态地重复调用JSF bean方法?

javascript - 有人可以解释一下我的 JavaScript 函数中发生了什么吗?

javascript - 使用 Javascript 的文本框组合框

model-view-controller - 从 EXTJS 4 MVC 中的 View 调用 Controller 方法

javascript - Ember.js 如何观察输入改变的数组键

php - MySql 定时查询

php - 更新一个字段,使订单值连续

php - Laravel Eloquent 一对一通过(级别/树)关系

javascript - 应用程序缓存错误 : Invalid or missing manifest origin trial token