2014-09-03 42 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