2014-09-03 4 views
0

Мне нужен мой контроллер для загрузки сетки с помощью comboboxes.Extjs 4. combobox в сетке. используя индекс для получения данных

Поле статуса (номер) в «данных оборудования» должно загружать поле состояния возможных состояний из «состояний оборудования» и отображать их в поле со списком.

При выборе новой опции идентификатор должен быть сохранен в поле «данные оборудования», в поле состояния. Как число.

// 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

Я не понимаю вашего вопроса ясно, но если вы хотите, чтобы отобразить статус в выпадающем списке и сохраните вариант вы выберете из выпадающего списка с идентификатором в виде числа следует добавить два 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); 
    } 

}); 

Если вы не хотите, пожалуйста, объясните свой вопрос более подробно. Надеюсь, это поможет.

+0

Спасибо за ваш ответ, вы поняли мой вопрос. Ваше предложение было бы очевидным ответом. Но когда я выбираю свой вариант, возвращаемое поле показывает значениеField (id) вместо displayField - screenshots:! [Select] (http://www.100it.be/images/ss1.jpg). ! [Результат] (http://www.100it.be/images/ss2.jpg). – Chris

+0

Решенный, я установил valueField как 'status'. Как ни странно, это было то, что я сделал в первый раз, что не сработало, должно быть, опечатка или недостающее поле. Спасибо за ваше время в любом случае, Egizeris. Все работает. – Chris