Extjs 解析Ext.grid.Panel单元格中的脏标志

Extjs 解析Ext.grid.Panel单元格中的脏标志,extjs,grid,save,Extjs,Grid,Save,在ExtJS网格中,我编辑单个单元格。在其中一列中,我有一个Save按钮,它触发Save事件。如何删除已编辑单元格中的脏标志(在下图中的红色框中)?我不知道如何使用代理执行创建、更新和销毁选项,因为文档中有一个很好的示例,所以我计划为这些步骤执行AJAX请求,直到我能够接受实际的Sencha培训。但是,如果直接使用存储和代理时脏标志会自行解决,那么我更愿意使用正确的方法 JavaScript代码: }, { header: 'Save',

在ExtJS网格中,我编辑单个单元格。在其中一列中,我有一个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');
                    }
                }]
            }

网格反映基础存储的状态,基础存储是基于数据模型的记录集合。因此,作为解决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');
}
试试这个:

// 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类的描述,您将了解正在执行的操作。

我不理解您想要的内容。你想删除脏标志吗?是的,这就是我想做的我喜欢你的答案,所以我会给你一些分数,但我认为如果最终用户知道单元格脏,并且他们实际上知道他们在给定的行上单击了保存,这将对他们有益。谢谢你的意见,谢谢你。我不想显示指示器,因为此网格是需要保存的较大表单的一部分。因此,客户端不想看到这些,实际上不需要在每次编辑时添加额外的代码来提交记录。请注意,只有在同步成功完成后,才应该提交,方法是将回调传递给
sync()
处理程序的附加位置(作为的成员),声明的存储变量在哪里?@DirkSchumacher在上面的示例中,
handler
被附加到带有工具提示“保存行”的操作列项。当用户通过单击或按Enter键激活操作项时,调用此函数<代码>存储在该示例中是一个闭合变量;首选的方法是从网格实例获取它:
Grid.getStore()