RowEditing и combobox - при изменении отображается "dataindex"
Здравствуйте, прошу помоши
RowEditing и combobox - при изменении отображается "dataindex" а необходимо чтоб отображалось "displayField" заранее спасибо ![]() Ext.define('ModelLib', { extend: 'Ext.data.Model', fields: [ 'trID', 'trName' ] }); var storeServer = Ext.create('Ext.data.Store', { autoDestroy: true, model: 'ModelLib', proxy: { type: 'ajax', api: { read: '/api.php?lib=server&act=get' }, reader: { type: 'json', root: 'fields', idProperty: "trID" } }, sorters: [{ property: 'trID', direction: 'ASC' }] }); storeServer.load(); Ext.define('ModelMainobjects', { extend: 'Ext.data.Model', fields: [ {name: 'trServerID', type: 'int'} ] }); var store = Ext.create('Ext.data.Store', { // destroy the store if the grid is destroyed autoDestroy: true, autoSync : true, model: 'ModelMainobjects', proxy: { type: 'ajax', api: { read: '/api.php?lib=mainobjects&act=get', update: '/api.php?lib=mainobjects&act=update' }, reader: { type: 'json', root: 'fields', idProperty: "trID" }, writer: { type: 'json' } }, sorters: [{ property: 'trID', direction: 'ASC' }] }); store.load(); var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', { clicksToMoveEditor: 1, autoCancel: false }); var rowRenderer = function(val) { var rec = storeServer.findRecord('id', val); return rec !== null ? rec.get("trName") : '' }; var grid = Ext.create('Ext.grid.Panel', { store: store, columns: [ { header: 'Сервер', dataIndex: 'trServerID', renderer: rowRenderer, editor: { xtype: 'combobox', store: storeServer, queryMode: 'local', displayField: 'trName', valueField: 'trID' } }], width: 600, height: 400, plugins: [rowEditing] }); |
Ага, распространенная проблема
Готовые решения: Айн: http://www.sencha.com/forum/showthre...-in-RowEditing Цвай: http://stackoverflow.com/questions/8...rking-properly |
собственно именно с этого сообщения я и взял код ))
http://www.sencha.com/forum/showthre...l=1#post841173 из того что понял, если я делаю статичный store - то все работает если динамический - то не работает статичный var storeServer = Ext.create('Ext.data.Store', { fields:['trID', 'trName'], data:{'items':[ { 'trID': 1, 'trName': 'Server 1' }, { 'trID': 2, 'trName': 'Server 2' } ]}, proxy: { type: 'memory', reader: { type: 'json', idProperty: "trID", root: 'items' } } }); динамический var storeServer = Ext.create('Ext.data.Store', { fields:['trID', 'trName'], proxy: { type: 'ajax', api: { read: '/api.php?lib=server&act=get' }, reader: { type: 'json', root: 'fields', idProperty: "trID" } } storeServer.load(); |
кажется разобрался, сам же отвечаю на свой вопрос (может кому поможет)
для первой редакции кода заменил объявление модели на Ext.define('ModelLib', { extend: 'Ext.data.Model', fields: [ {name: 'trID', type: 'int'}, {name: 'trName', type: 'string'} ] }); то есть для полей модели важно указать их тип, иначе render не находит (в store мы сказали что trServerId - int, а нам для storeServer trID пришла строка) |
Часовой пояс GMT +3, время: 17:27. |