グリッドの 2 つの列を表示しています。
「1年データ」と「2年データ」
グリッド オプション [1Yr. 2年]
コンボを変更するときは、GRID をリロードせずに、またサービスにアクセスすることなく、その列の値を変更したいと考えています。
ストアから読み取って列データを変更するオプションはありますか??
よろしくお願いします!!!
Izhaki が言ったように、グリッドはストアにバインドされています。したがって、グリッドを更新する場合は、ストアのデータを変更するだけで、グリッドが自動的に更新されます。
これがあなたがやろうとしていたことだと思います。お役に立てば幸いです。
/* MODEL */
Ext.define('YrModel', {
extend: 'Ext.data.Model',
fields: [{
name: 'yearOne',
type: 'int'
}, {
name: 'yearTwo',
type: 'int'
}],
});
/* STORE */
Ext.create('Ext.data.Store', {
storeId: 'YrStore',
model: "YrModel",
data: data,
autoLoad: true,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
/* COMBOBOX STORE */
var comboboxStore = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data: [{
"abbr": "yearOne",
"name": "Year One"
}, {
"abbr": "yearTwo",
"name": "Year Two"
}]
});
/* COMBOBOX */
var combobox = Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose a year',
store: comboboxStore,
queryMode: 'local',
editable: false,
displayField: 'name',
valueField: 'abbr'
});
/* LISTENER TO COMBOBOX SELECT EVENT */
combobox.on({
select: onComboboxSelect
});
/* METHOD THAT HANDLE THE COMBOBOX SELECT EVENT */
function onComboboxSelect(combo, records) {
var yearSelectValue = null;
var yearSelected = (records.length > 0) ? records[0].get('abbr') : null;
Ext.getStore('YrStore').each(function (record, index, count) {
yearSelectValue = record.get(yearSelected);
record.set(yearSelected, yearSelectValue + 1);
});
}
/* GRID */
Ext.create('Ext.grid.Panel', {
title: 'Year Data',
renderTo: Ext.getBody(),
store: Ext.getStore('YrStore'),
viewConfig: {
markDirty: false
},
columns: [{
text: 'Year One',
dataIndex: 'yearOne',
flex: 1,
sortable: true
}, {
text: 'Year Two',
dataIndex: 'yearTwo',
flex: 1,
sortable: true
}
],
dockedItems: [{
xtype: 'toolbar',
dock: 'bottom',
items: [combobox]
}]
});