如何从ExtJS数据存储中获取脏记录?

如何从ExtJS数据存储中获取脏记录?

问题描述:

除了遍历商店中的记录并检查脏标志,有没有更清晰的方法?如何从ExtJS数据存储中获取脏记录?

编辑

我使用ExtJS4,顺便说一句。

这是返回的数据片段。注意到有一个dirty: truemodified目标集(这实际上是旧数据和data对象包含新的数据)

data: Ext.Class.Class.newClass 
    items: Array[3] 
     0: Ext.Class.Class.newClass 
      data: Object 
       incidentCount: 14 
       incidentKey: "5466BD05-E4DD-4C1F-9F73-61ABAC6D3753" 
      dirty: true 
      id: "Ext.data.Store.ImplicitModel-TEDetailIncidencesStore-ext-record-13" 
      index: 0 
      internalId: "ext-record-13" 
      modified: Object 
       incidentCount: 7 

通知的data块包含的14的incidentCount这是NEW值和modified块包含的OLD值7.

编辑2

予装载存储与:

TimeEntryDetailsStore.load({ 
    params:{ 
     timeEntryKey:"myKey" 
    } 
}); 

此火灾后,将上述存储被成功加载有3行。然后,当我改变的值时,脏标志设置,你会得到数据的上述块

感谢

编辑3

这是我要使用除非有人代码一个更好的方法。我不明白为什么getUpdatedRecords()返回一个空数组。但是,好吧。

for(c=0; c < TEDetailIncidencesStore.count(); c++) { 
    if(TEDetailIncidencesStore.data.items[c]["dirty"] == true) { 
     var dirtyRecord = TEDetailIncidencesStore.data.items[c]; 
     updateTEDetailIncidences(dirtyRecord); 
    } 
} 
+0

您可以发布您的代码SOEM而不是什么是显示在控制台 – shane87 2011-06-09 15:32:50

+0

顺便说一句,'store.getNewRecords()'返回所有三个记录。既脏又不脏? – cbmeeks 2011-06-09 15:42:05

+0

那么'TimeEntryDetailsS​​tore.getUpdatedRecords()'返回什么?只是一个空阵列。我真的需要看到你的网格和商店的代码进一步研究。 – shane87 2011-06-09 15:47:38

诀窍是,店里读者需要指定一个idProperty或所有行被认为是新的。下面是为我工作的结构:

Ext.define('Sites', { 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'inCphr', type: 'boolean'}, 
    {name: 'department', type: 'string'}, 
    {name: 'commune', type: 'string'}, 
    {name: 'clinic', type: 'string'}, 
    {name: 'sitecode', type: 'int'}, 
    {name: 'dbsite', type: 'int'}, 
    {name: 'ipAddress', type: 'string'}, 
    {name: 'network', type: 'string'}, 
    {name: 'lastChanged', type: 'date'} 
    ] 
}); 
var store = Ext.create('Ext.data.Store', { 
    model: 'Sites', 
    proxy: { 
     type: 'ajax', 
     url : 'getHaitiSites.php?task=get', 
     reader:{ 
      type:'json', 
      root: 'results', 
      idProperty: 'sitecode' 
     } 
    } 
}); 

如果你能得到一个表格显示“脏”的元素,然后store.getUpdatedRecords()长度为> 0,我看到一个评论,暗示此会。只能使用json阅读器,但我不明白为什么它不适用于其他数据结构。

+1

仅供参考,您还可以在模型上设置'idProperty'以将它保留在一个地方。恕我直言,这应该是模型定义的一部分,因为idProperty不应该在可能使用相同模型的各种商店中的应用程序中更改。 – BenSwayne 2012-06-15 19:56:04

如何在您的商店getModifiedRecords()方法?这应该给你你需要的东西。

ExtJs 4store.getUpdatedRecords()store.getModifiedRecords()在ExtJs3

+0

我看到了,并尝试过,但它返回一个空数组。即使这些项目显然有“脏:真”的条目。事实上,我甚至可以看到红色的三角形。 – cbmeeks 2011-06-09 15:22:31

+0

你可以发表一些代码吗?你用什么版本的extjs? – shane87 2011-06-09 15:23:25

+0

好吧,现在我只是在控制台工作。数据存储正确加载。我将更新商店数据的片段。我正在使用版本4 – cbmeeks 2011-06-09 15:25:15

这是因为模型字段的指定验证。

请参见以下链接:

http://www.sencha.com/forum/showthread.php?141421-Ext.data.Store-getNewRecords%28%29-behaves-strange