更改extjs RowEditing插件中的行

时间:2013-11-19 14:31:36

标签: extjs extjs4 extjs4.2

我使用的是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更改某些数据然后更改行时,我的所有更改都会丢失。我想在未经许可的情况下拒绝更改正在编辑的行的位置。或者至少通过行更改自动保存数据更改。无法找到办法。

1 个答案:

答案 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) {  
                  .....  
                }  
}