проблемы с combo в grid
Не могу добится чтобы комбо который находится в гриде
выводилось название, а значение было кодом. при выборе значения в комбо в таблице отображается код тут стор куда из json загружается данные
Ext.define('ccmbUser2', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
var store_cust_cmb = Ext.create('Ext.data.Store', {
model: 'ccmbUser2',
proxy: {
type: 'ajax',
url : 'custall.php',
actionMethods: {
read: 'POST'
},
autoLoad: true
}
});
тут описание колонок в таблице
const col_grid_vagon = [
{
text : 'Контрагент',
dataIndex: 'customer',
flex:1,
editor: new Ext.form.ComboBox({
//renderTo: 'ex1',
id: 'combocust',
//fieldLabel: 'Контрагент',
store: store_cust_cmb,
displayField: 'name', // это текстовое значение <option>…</option>
valueField: 'id', // а это значение поля <option value=»…»>
})
}, ...
как сделать чтобы для колонки таблицы была подмена? 2) и вторая проблема если я в эту таблицу загружаю сохраненные данные с сервера как в поле с combo загрузить и код и значение или это нужно два поля использовать сейчас у меня загружается только name загружается данные в стор
store_vagon = new Ext.data.Store ({
pageSize: 10,
model: 'vModel',
proxy: {
type: 'ajax',
url: '/vagontable.php?id=' + gridid,
actionMethods: {
read: 'GET'
},
reader: {
type: 'json',
root: 'data',
totalProperty: 'totalCount'
}
},
autoLoad: true,
remoteSort: true
});
а как сделать чтобы два значения в таблице сохранялось я не понимаю? |
что я делаю не так?
на doc.sencha.com написано что при комбо в гриде делать так
Ext.util.Format.comboRenderer = function(combo){
return function(value){
var record = combo.findRecord(combo.valueField, value);
return record ? record.get(combo.displayField) : combo.valueNotFoundText;
}
}
var combo = new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
lazyRender:true,
mode: 'local',
store: new Ext.data.ArrayStore({
id: 0,
fields: [
'id',
'customer'
],
data: [[1, 'item1'], [2, 'item2']]
}),
valueField: 'id',
displayField: 'customer'
});
var col_grid_vagon = ([
{
text : 'Контрагент',
dataIndex: 'customer',
flex:1,
editor: combo,
renderer: Ext.util.Format.comboRenderer(combo)
}, ....
отображается после выбора значения путое поле почему в comboRenderer record возвращает false? что я делаю не так? |
Попробуйте определить в хранилище таблицы два поля id и name. Поле id не показывайте в представлении. Слушайте событие select компонента combobox. В обработчик поступает запись (record) хранилища комбобокса. Перенесите из неё id в выбранную пользователем запись таблицы. Запись найдёте через grid.getSelectionModel().getLastSelected().
|
Цитата:
|
Как установить значение полю с id?
listeners: {
select: {
fn: function( combo, records, eOpts ){ alert ( records[0].data.id );
}
}
}
при выборе селект, мне показывает какой id выбран, в комбо как мне надо остается name теперь мне нужно в соседнем поле grid |
Насколько мне известно, в данном случае стандартное решение не работает:
combo.up('grid').getSelectionModel().getLastSelected().set('id', records[0].get('id'));
Присвойте гриду id или itemId. Должно сработать так:
Ext.getCmp('my_grid_id').getSelectionModel().getLastSelected().set('id', records[0].get('id'));
либо так:
Ext.ComponentQuery.query('[itemId="my_grid_itemId"]')[0].getSelectionModel().getLastSelected().set('id', records[0].get('id'));
|
Цитата:
|
| Часовой пояс GMT +3, время: 11:26. |