我使用的是ExtJS 4.2.2版本。
我创建了RowEditing
rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
clicksToEdit : 2,
clicksToMoveEditor : 1,
autoCancel : false,
errorSummary : false,
listeners : {
edit : function(editor, e, opt) {
// ... some code ...
}
}
});
然后在面板上使用它:
tGrid = Ext.create('Ext.tree.Panel', {
title : 'title',
rootVisible : false,
store : tStore,
plugins : [ rowEditing ],
columns : this.defineColumns()
});
this.defineColumns = function() {
return [ {
text : 'smth',
xtype : 'treecolumn',
dataIndex : 'name',
width : 300,
editor : {}
}];
};
因此,当我使用rowEditing更改某些数据然后更改行时,我的所有更改都会丢失。我想在未经许可的情况下拒绝更改正在编辑的行的位置。或者至少通过行更改自动保存数据更改。无法找到办法。
答案 0 :(得分:0)
//在控制器上配置onGridCellClick以自动保存已修改的行
init: function() {
this.control({
'#listingGrid' : {
cellclick : this.onGridCellClick
}
});
}
onGridCellClick: function() {
// Autosave modified rows.
var lModifiedRecords = YourApp.utils.CustomUtils.getGrid().getStore().getModifiedRecords();
for (var i=0; i< lModifiedRecords.length; i++) {
var lModifiedRecord = lModifiedRecords[i].data;
var ajaxConfig = {url: '#{serviceUrl}', requestParams: lModifiedRecord};
ajaxWrapper(ajaxConfig);
}
function ajaxWrapper(ajaxConfig) {
Ext.Ajax.request({
scope : this,
url : ajaxConfig.url,
..
params : ajaxConfig.requestParams,
success : function(response, opts) {
.....
}
}