我在ExtJs 3.3.1中使用了一個livegrid,但相信這個問題對於ExtJs是全球性的。 商店的聽衆如何知道事件來自哪個網格?ExtJs:確定引發商店更新事件的網格
這裏爲什麼和一些代碼。
我有一個商店的偵聽器和更新,我想知道在網格中選擇了哪些行,並暫停事件。這一切,以便我可以在網格中進行選擇,更新該範圍中的字段並在整個選擇中更新該字段。選擇沒有複選框,只需突出顯示行。由於該監聽器被許多網格,我需要一種方式來獲得它froml什麼gridlistener得到的參數,但是即
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()
}
}
}
});
你究竟在做什麼?網格應該自動更新它的東西。從您的問題不清楚什麼_real_問題是 – sha
問題是,我使用這個監聽器的許多網格,我需要知道在監聽器本身它正在處理的網格 – peter
我明白這一點。你在聽者中究竟想做什麼?看起來你正在手動更新網格,並且應該自動發生 – sha