2014-09-03 83 views
0

我需要我的控制器加载组合框的网格。Extjs 4.网格中的组合框。使用索引获取数据

'设备数据'中的状态字段(数字)应该从'设备状态'加载可能状态的状态字段并将它们显示在组合框中。

当选择一个新选项时,id应该保存在'设备数据'状态字段中。作为一个数字。

// 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); 
    } 

}); 

回答

1

我不明白你的问题清楚了,但如果你想显示在组合框中状态,并节省您与ID为数字组合框中选择的选项,你应该增加两个displayField和valueField在ComboBox配置。

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); 
    } 

}); 

如果不是你想要的,请详细解释你的问题。希望有所帮助。

+0

感谢您的回复,您已经理解我的问题。你的建议将是一个明显的答案。但是,当我选择我的选项时,返回的字段显示valueField(id)而不是displayField - screenshots:![select](http://www.100it.be/images/ss1.jpg)。 ![结果](http://www.100it.be/images/ss2.jpg)。 – Chris 2014-09-03 15:53:00

+0

解决了,我已将valueField设置为'status'。这很奇怪,因为这是我第一次做的,没有奏效,肯定是一个错字或缺失的领域。无论如何,感谢您的时间,Egizeris。一切正常。 – Chris 2014-09-03 16:27:29