在Ext JS网格中,我正在编辑单个单元格。在其中一列中,我有一个Save按钮,用于触发Save事件。如何删除已编辑单元格中的脏标志(下图中的红框)?我不知道如何使用代理执行创建,更新和销毁选项,因为文档有一个很好的示例,因此我计划对这些步骤执行AJAX请求,直到我可以进行实际的Sencha培训。但是,如果脏标志自行解析,如果我直接使用商店和代理,我宁愿以正确的方式做到这一点。
JavaScript代码:
}, {
header: 'Save',
xtype: 'actioncolumn',
align: 'center',
width: 50,
sortable: false,
items: [{
icon: './Scripts/extjs/examples/shared/icons/fam/add.gif',
tooltip: 'Save Row',
handler: function (grid, rowIndex, colIndex) {
store.sync();
alert('saving');
}
}]
}, {
header: 'Delete',
xtype: 'actioncolumn',
align: 'center',
width: 50,
sortable: false,
items: [{
icon: './Scripts/extjs/examples/shared/icons/fam/delete.gif',
tooltip: 'Delete Task',
handler: function (grid, rowIndex, colIndex) {
store.removeAt(rowIndex);
store.sync();
alert('deleting');
}
}]
}
答案 0 :(得分:7)
试试这个:
// you can keep the way you are creating your Grid
Ext.create('Ext.grid.Panel', {
// other options
// these configs are sent to Ext.view.Table through Ext.grid.View
viewConfig: {
markDirty: false
}
});
我没有测试过,但我认为这就是你需要的。看看:
阅读Ext.view.Table类的描述,您将了解正在做什么。
答案 1 :(得分:6)
网格反映基础商店的状态,商店是基于您的数据模型的记录集合。因此,在您找到Ajax代理之前,作为一种快捷方式,您可以这样做:
// Save handler
handler: function(grid, rowIndex, colIndex) {
store.sync(); // Doesn't work now
store.getAt(rowIndex).commit(); // Commit changes, clearing dirty flag
alert('Record should now be clear');
}