combobox в grid'е
есть грид. получаю фокус combobox'са и вместо значения (name) у меня показывает айдишник. после того как выберу элемент из списка, то дальше работает нормально. как при получения фокуса выводил сразу (name) а не id
var store_combo; var store; Ext.onReady(function(){ //------------------- var getStore = function(URL, FIELDS) { return Ext.create('Ext.data.Store', { fields: FIELDS, idProperty: 'id', proxy: { type: 'ajax', url: URL, actionMethods: { read: 'POST' }, reader: { root: 'data', totalProperty: 'totalCount' } }, autoLoad: true }); } //------------------- store_combo = getStore( 'get/statuswork', ['id', 'name']); store = getStore( 'get/work?project_id=3', ['id', 'name', 'status_id']); //------------------- Ext.create('Ext.panel.Panel', { items: [ { xtype: 'grid', store: store, columns: [ { text: 'column', dataIndex: 'status_id', renderer: function(id) { var index = store_combo.find("id", id); return (index == -1) ? '' : store_combo.getAt(store_combo.find("id", id)).get('name'); }, editor: Ext.create('Ext.form.field.ComboBox', { store: store_combo, hideLabel: true, queryMode: 'local', displayField: 'name', valueField: 'id' }) }], plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})] }], renderTo: Ext.getBody() }); //------------------- }); |
кое что нарыл. беда в самих сторах. если данные хранятся в 'data' то все норм работает
вот пример сторы: Ext.create('Ext.data.Store', { fields:['status_id'], data:[ {"status_id": 2}, {"status_id": 1}, {"status_id": 2}, {"status_id": 3}], proxy: { type: 'memory', reader: { type: 'json' } } }); но мне данные нужно из бд тянуть, а не чтобы локально хранились.. |
задача решилась.. id статуса в сторах была типа string а не int
вот к примеру: Ext.create('Ext.form.field.ComboBox', { store: store_combo, hideLabel: true, queryMode: 'local', displayField: 'name', valueField: 'id', listeners: { focus: { fn: function() { console.log(typeof this.getValue()); } } } } при фокусе в консоль выдаст String, нужен int |
Часовой пояс GMT +3, время: 01:33. |