Resolving Dirty Flag in Ext.grid.Panel cell
在 Ext JS 网格中,我正在编辑单个单元格。在其中一列中,我有一个触发 Save 事件的 Save 按钮。如何删除已编辑单元格中的脏标志(在下图中的红色框中)?我不知道如何使用代理执行创建、更新和销毁选项,因为文档中有一个很好的示例,所以我计划对这些步骤进行 AJAX 请求,直到我可以进行实际的 Sencha 培训。但是,如果我直接使用存储和代理,脏标志会自行解决,我宁愿以正确的方式进行操作。
JavaScript 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | }, { 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'); } }] } |
试试这个:
1 2 3 4 5 6 7 8 | // 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 } }); |
我没有测试它,但我认为这就是你需要的。看看:
- http://dev.sencha.com/deploy/ext-4.1.0-gpl/docs/index.html#!/api/Ext.grid.View
- http://dev.sencha.com/deploy/ext-4.1.0-gpl/docs/index.html#!/api/Ext.view.Table
- http://dev.sencha.com/deploy/ext-4.1.0-gpl/docs/index.html#!/api/Ext.view.Table-cfg-markDirty
阅读 Ext.view.Table 类的描述,你就会明白做了什么。
Grid 反映了底层 Store 的状态,它是基于您的数据模型的记录集合。因此,在弄清 Ajax 代理之前,作为一种捷径,您可以这样做:
1 2 3 4 5 6 7 8 | // 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'); } |