如何在extjs 4.1网格中为特定列设置动态数据
我为一个网格显示了2列 “1年数据”和“2年数据” Grid有一个带有选项[1Yr.2Yr]的组合框的工具栏 现在,当我要更改组合时,我希望在不重新加载网格和不点击任何服务的情况下更改该列的值 那么,是否有任何选项可以通过从存储中读取来更改columndata如何在extjs 4.1网格中为特定列设置动态数据,extjs,extjs4,extjs4.1,Extjs,Extjs4,Extjs4.1,我为一个网格显示了2列 “1年数据”和“2年数据” Grid有一个带有选项[1Yr.2Yr]的组合框的工具栏 现在,当我要更改组合时,我希望在不重新加载网格和不点击任何服务的情况下更改该列的值 那么,是否有任何选项可以通过从存储中读取来更改columndata 提前感谢您的帮助 网格绑定到一个商店,就像Izhaki说的那样。因此,如果要刷新网格,只需修改存储的数据,网格就会自动刷新 我想这就是你想做的。我希望它能帮助你 /* MODEL */ Ext.define('YrModel', {
提前感谢您的帮助 网格绑定到一个商店,就像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]
}]
});
这个问题很不清楚。网格绑定到存储。网格显示存储所保存的记录。如果存储更改,网格将更新。网格是否真的显示两列?或者它是否显示可能需要显示第1年数据或第2年数据的单个列?如果是后者,请将您的所有记录保存在商店中(两年),并在本地筛选商店。感谢Izhaki的回复,很抱歉没有正确解释该场景。。。。这里我有一个组合框和两个值。网格有两列“1年数据”和“2年数据”。如果我选择1Yr in组合,则只有标题为“1Yr Data”的1列将填充新数据。同样,如果我从combo中选择2年,第二列将填充新数据。非常感谢您为我节省了大量时间。。。再次感谢大家的帮助!!!现在,如果我们放置一个selModel:Ext.create('Ext.selection.CheckboxModel'),让选择1记录并更改组合,那么在列数据更改之后,复选框将被取消选中。。。。那么,有没有办法保持复选框的状态,这样就不需要再次检查记录了?在我的网格数据中,我显示了大约1500条记录,并且在设置值时需要一些时间,因此我尝试在更新时屏蔽网格,并在更新后取消屏蔽。如何捕获afterupdate?onchange事件如果有alert(),我将调用此方法,并且其工作正常。updateRecords:function(combo,newValue,oldValue,columnId,statId){if(oldValue!=未定义){grid.setLoading('some text');alert(“将设置所有记录”);var cindex=combo.getValue();var column=Ext.getCmp(columnId);grid.getStore().each(函数(record,index,count){var recordDataObject=record.get(statId);record.set(columnId,recordDataObject[cindex]);});}grid.setLoading(false);}