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, время: 23:16. |