extjs4。网格中的组合框。使用索引获取数据
我需要我的控制器加载带有组合框的网格 “设备数据”中的状态字段(编号)应从“设备状态”加载可能状态的状态字段,并在组合框中显示这些状态 选择新选项时,id应保存在“设备数据”状态字段中。作为一个数字extjs4。网格中的组合框。使用索引获取数据,extjs,binding,combobox,Extjs,Binding,Combobox,我需要我的控制器加载带有组合框的网格 “设备数据”中的状态字段(编号)应从“设备状态”加载可能状态的状态字段,并在组合框中显示这些状态 选择新选项时,id应保存在“设备数据”状态字段中。作为一个数字 // for store 'equipment' <?php header("Content-type: application/json"); ?> { "success": true, "data": [ { "equipmen
// for store 'equipment'
<?php
header("Content-type: application/json");
?>
{
"success": true,
"data": [
{
"equipment_id": 1,
"name": "screwdriver",
"status": 1
}
]
}
// store 'equipmentStatus'
<?php
header("Content-type: application/json");
?>
{
"success": true,
"data": [
{
"id": 1,
"status": "available"
},
{
"id": 2,
"status": "out of stock"
},
{
"id": 3,
"status": "not available"
}
]
}
// -----------------------------
Ext.define('Equipment.view.EquipmentGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.EquipmentGrid',
title: 'Equipment manager',
requires: [
'Ext.form.field.ComboBox',
'Ext.grid.column.CheckColumn',
'Ext.grid.plugin.CellEditing'
],
initComponent: function () {
// enable quicktips
Ext.tip.QuickTipManager.init();
this.cellEditing = new Ext.grid.plugin.CellEditing({
clicksToEdit: 1
});
Ext.apply(this, {
plugins: [this.cellEditing],
// connect store to grid
store: 'Equipments',
columns: [
{
header: 'Status',
dataIndex: 'status',
editor: new Ext.form.field.ComboBox({
typeAhead: true,
triggerAction: 'all',
store: 'EquipmentStatus'
})
}
]
});
this.callParent(arguments);
}
});
//用于存储“设备”
{
“成功”:没错,
“数据”:[
{
“设备id”:1,
“名称”:“螺丝刀”,
“地位”:1
}
]
}
//存储“设备状态”
{
“成功”:没错,
“数据”:[
{
“id”:1,
“状态”:“可用”
},
{
“id”:2,
“状态”:“缺货”
},
{
“id”:3,
“状态”:“不可用”
}
]
}
// -----------------------------
Ext.define('device.view.EquipmentGrid'{
扩展:“Ext.grid.Panel”,
别名:“widget.EquipmentGrid”,
标题:“设备经理”,
要求:[
“Ext.form.field.ComboBox”,
“Ext.grid.column.CheckColumn”,
'Ext.grid.plugin.CellEditing'
],
initComponent:函数(){
//启用快速提示
Ext.tip.QuickTipManager.init();
this.celleediting=新建Ext.grid.plugin.celleediting({
单击编辑:1
});
Ext.apply(本{
插件:[this.cellEditing],
//将存储连接到网格
商店:'设备',
栏目:[
{
标题:“状态”,
数据索引:“状态”,
编辑器:新建Ext.form.field.ComboBox({
是的,
触发动作:“全部”,
存储:“设备状态”
})
}
]
});
this.callParent(参数);
}
});
我不清楚您的问题,但如果您想在组合框中显示状态并将从组合框中选择的选项以id作为数字保存,则应在组合框配置中添加两个displayField和valueField
Ext.define('Equipment.view.EquipmentGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.EquipmentGrid',
title: 'Equipment manager',
requires: [
'Ext.form.field.ComboBox',
'Ext.grid.column.CheckColumn',
'Ext.grid.plugin.CellEditing'
],
initComponent: function () {
// enable quicktips
Ext.tip.QuickTipManager.init();
this.cellEditing = new Ext.grid.plugin.CellEditing({
clicksToEdit: 1
});
Ext.apply(this, {
plugins: [this.cellEditing],
// connect store to grid
store: 'Equipments',
columns: [
{
header: 'Status',
dataIndex: 'status',
editor: new Ext.form.field.ComboBox({
typeAhead: true,
triggerAction: 'all',
store: 'EquipmentStatus',
// status field will be displayed in combobox
displayField: 'status',
// id field will be the value of selected status
valueField: 'id'
})
}
]
});
this.callParent(arguments);
}
});
如果不是你想要的,请详细解释你的问题。希望有帮助 谢谢你的回复,你已经理解我的问题了。你的建议将是一个显而易见的答案。但是当我选择我的选项时,返回的字段显示valueField(id),而不是displayField-屏幕截图:!。解决了,我也将valueField设置为“status”。奇怪的是,这是我第一次做的,但并没有起作用,一定是打字错误或缺少字段。不管怎样,谢谢你抽出时间,艾吉泽利斯。一切正常。