// 這個繼承比較簡單,看注釋就會清楚了,文件名定義為CustomGridPanel.js
Ext.grid.CustomGridPanel = function(c){
Ext.grid.CustomGridPanel.superclass.constructor.call(this, c);
};
Ext.extend(Ext.grid.CustomGridPanel, Ext.grid.GridPanel, {
// 選擇下一行記錄,如果沒有下一行記錄則選擇上一行記錄,會刷新表格
selectNext: function(){
var grid_ = this;
var selModel = grid_.getSelectionModel();
var nextSel = null;
if(selModel.hasNext()){
selModel.selectNext();
}else if(selModel.hasPrevious()){
selModel.selectPrevious();
}else{
return null;
}
nextSel = selModel.getSelected();
grid_.getView().refresh();
return nextSel;
// if(nextSel){selModel.selectRecords([nextSel]);}
},
// 根據已經選擇的排序信息,插入一條記錄,并選擇插入的記錄
addSorted: function(record,dwr,dwrOpts){
var grid_ = this;
var result = grid_.invokeDwr(record,dwr,dwrOpts);
if(result){
grid_.getStore().addSorted(record);
grid_.getView().refresh();
grid_.getSelectionModel().selectRecords([record]);
}
return result;
},
// 在最后面插入一條記錄,并選擇插入的記錄
insertLast: function(record,dwr,dwrOpts){
var grid = this;
var index = grid.getStore().getCount();
return grid.insert(index,record,dwr,dwrOpts);
},
// 在給定索引上插入一條記錄,并選擇插入的記錄
insert: function(index,record,dwr,dwrOpts){
var grid_ = this;
var result = grid_.invokeDwr(record,dwr,dwrOpts);
if(result){
grid_.getStore().insert(index, record);
grid_.getView().refresh();
grid_.getSelectionModel().selectRecords([record]);
}
return result;
},
invokeDwr: function(record, dwr, dwrOpts){
var flag = true;
if(dwr){
var dwrObj = {async: false};
if(dwrOpts){
dwrObj = Ext.apply(dwrObj, dwrOpts);
}
dwrObj.errorHandler = function(text,e){
flag = false;
Ext.CustomUtil.error(text);
};
// dwr.apply(this, [record.data, dwrObj]);
dwr(record.data, dwrObj);
return flag;
} else {
return false;
}
},
// 刪除一條記錄,選擇下一條可以刪除的記錄
removeRecord: function(record, dwr, dwrOpts){
var grid = this;
var err = false;
err = ! grid.invokeDwr(record, dwr, dwrOpts);
if(err){return;}
var next = grid.selectNext();
grid.getStore().remove(record);
if(next){grid.getSelectionModel().selectRecords([next]);}
},
// 獲取選擇的單一記錄
getSelected: function(){
return this.getSelectionModel().getSelected();
}
});