我在 ExtJs 3.3.1 中使用 livegrid,但相信这个问题对 ExtJs 来说是全球性的。商店中的侦听器如何知道事件来自哪个网格?
这是为什么和一些代码。
我在商店有一个监听器,在更新时我想知道在网格中选择了哪些行并暂停事件。这一切都是为了让我可以在网格中进行选择,更新该范围内的字段并更新整个选择中的该字段。选择是在没有复选框的情况下完成的,只需突出显示行。由于该侦听器被许多网格使用,我需要一种方法来从网格侦听器作为参数获取的内容中获取它,但这只是存储、记录和操作
Ext.override(Ext.ux.grid.livegrid.Store, {
listeners: {
'update': function(store, record, action) {
if (action=='commit'){ //each update has 2 actions, an edit and a commit
var selected = grid.getSelectionModel().getSelections(); //need to know which grid
if (selected.length>1){ //if more than one row selected
grid.suspendEvents();
store.writer.autoSave = false;
for(var i=0; i < selected.length; i++){
if (this.fieldChanged) {
for (var name in this.fieldChanged) {
//get the field changed and update the selection with the value
if (selected[i].get(name)!=this.fieldChanged[name]){
selected[i].set(name, this.fieldChanged[name]);
}
}
}
}
grid.resumeEvents();
store.fireEvent("datachanged", store);
store.writer.autoSave = true;
}
}
if (action=='edit'){
this.fieldChanged = record.getChanges()
}
}
}
});