我正在为 Grid 显示 2 列让我们说
“1 年数据”和“2 年数据”
Grid 有一个带有组合框的工具栏,带有选项 [1Yr. 2年]
现在,当我要更改组合时,想要更改该列的值而不重新加载 GRID 并且不点击任何服务。
那么是否有任何选项可以通过从商店读取来更改列数据?
在此先感谢您的帮助!!!
就像 Izhaki 说的那样,网格绑定到一个商店。所以如果你想刷新Grid,只需要修改Store的数据,Grid就会自动刷新。
我想这就是你想要做的。我希望它可以帮助你。
/* 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]
}]
});