2011-06-09 84 views
7

除了遍歷商店中的記錄並檢查髒標誌,有沒有更清晰的方法?如何從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

回答

8

訣竅是,店裏讀者需要指定一個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

3

如何在您的商店getModifiedRecords()方法?這應該給你你需要的東西。

6

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