如何从ExtJS数据存储中获取脏记录?
除了遍历商店中的记录并检查脏标志,有没有更清晰的方法?如何从ExtJS数据存储中获取脏记录?
编辑
我使用ExtJS4,顺便说一句。
这是返回的数据片段。注意到有一个dirty: true
与modified
目标集(这实际上是旧数据和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);
}
}
诀窍是,店里读者需要指定一个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阅读器,但我不明白为什么它不适用于其他数据结构。
仅供参考,您还可以在模型上设置'idProperty'以将它保留在一个地方。恕我直言,这应该是模型定义的一部分,因为idProperty不应该在可能使用相同模型的各种商店中的应用程序中更改。 – BenSwayne 2012-06-15 19:56:04
如何在您的商店getModifiedRecords()方法?这应该给你你需要的东西。
您可以发布您的代码SOEM而不是什么是显示在控制台 – shane87 2011-06-09 15:32:50
顺便说一句,'store.getNewRecords()'返回所有三个记录。既脏又不脏? – cbmeeks 2011-06-09 15:42:05
那么'TimeEntryDetailsStore.getUpdatedRecords()'返回什么?只是一个空阵列。我真的需要看到你的网格和商店的代码进一步研究。 – shane87 2011-06-09 15:47:38