为什么内存代理中的数据标记为脏?

时间:2013-07-15 10:54:26

标签: extjs extjs4 extjs4.2

我有一个使用内存代理的商店。商店通过调用loadRawData方法获取数据。我现在使用roweditor&amp ;;对这些数据进行一些更改。 rowaction导致脏记录,这似乎是一个正确的行为,但这个商店将永远无法同步任何数据,所以为什么所有单元格都标有这个红色三角形?

我想我必须在这里监督一些事情。如何在没有在修改过的田地上失去轨道的情况下保留这些三位一体?

我正在使用ExtJS 4.2.1

2 个答案:

答案 0 :(得分:4)

如果您不想在网格上使用小红色三角形,可以在viewConfig中设置以下内容。

markDirty: false

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.view.Table-cfg-markDirty

答案 1 :(得分:2)

  

由于LUKE已经回答了问题,我将仅添加一些关于记录

的脏标志的附加信息

  

注意dirty标记被标记为 readonly ,这是有原因的。

至少有一个原因:

  

时间set()完成记录已经发布了   对商店的更改,同时触发update事件   修改后的数据。

所以改变dirty标志将没有任何影响,因为它发生在所有这一切之后!因此,记录将被标记为脏例如网格已经用红色三角标记了所有已更改的列。


要阻止记录设置它的dirty标志,请使用beginEdit() / endEdit()块并且不要使用set,因为set()将始终设置脏标志。< / p>

以下示例反转布尔值,影响dirty标志

record.beginEdit();
record.data.active = !rec.data.active;
record.endEdit();