如何从ExtJS数据存储区获取脏记录? [英] How do I get the dirty records from an ExtJS data store?
问题描述
除了重复商店中的记录和检查脏标记之外,是否有更干净的方法?
Other than iterating over the records in the store and checking the dirty flag, is there a cleaner way?
编辑
我正在使用ExtJS4,btw。
I am using ExtJS4, btw.
这是一个返回的数据片段。注意,有一个 dirty:true
与修改的
对象集(实际上是OLD数据和 data
object包含新数据)
Here is a snippet of the data returned. Notice there is a dirty: true
with the modified
object set (which is actually the OLD data and the data
object contains the NEW 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
block包含一个 incidentCount
为14.这是新值和修改
块包含 OLD 值为7.
Notice the data
block contains an incidentCount
of 14. That is the NEW value and the modified
block contains the OLD value of 7.
EDIT 2
I加载商店:
TimeEntryDetailsStore.load({
params:{
timeEntryKey:"myKey"
}
});
在此之后,上述存储已成功加载3行。然后,当我更改一个值时,脏标志被设置,你得到上面的数据块
After this fires, the above store is successfully loaded with 3 rows. Then, when I change a value, the dirty flag is set and you get the above block of data
谢谢
编辑3
这是我要使用的代码,除非有更好的方法。我不明白为什么 getUpdatedRecords()
返回一个空数组。 (c = 0; c< TEDetailIncidencesStore.count(); c ++){
This is the code I am going to use unless someone has a better way. I don't understand why the getUpdatedRecords()
returns an empty array. But oh well.
for(c=0; c < TEDetailIncidencesStore.count(); c++ ) {
if( TEDetailIncidencesStore.data.items[c]["dirty"] == true) {
var dirtyRecord = TEDetailIncidencesStore.data.items[c];
updateTEDetailIncidences(dirtyRecord);
}
}
推荐答案
诀窍是商店读者需要指定一个idProperty或所有行被认为是新的。这是为我工作的结构:
The trick is that the store reader needs to designate a idProperty or all rows are considered new. Here's the construct that is working for me:
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读者,但我不明白为什么它不适用于其他数据结构。
If you can get a grid to show 'dirty' elements, then store.getUpdatedRecords().length will be > 0. I saw one comment that suggested this would only work with a json reader, but I don't see why it wouldn't work for other data structures as well.
这篇关于如何从ExtJS数据存储区获取脏记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!