Other than iterating over the records in the store and checking the dirty flag, is there a cleaner way?
EDIT
I am using ExtJS4, btw.
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
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 load the store with:
TimeEntryDetailsStore.load({
params:{
timeEntryKey:"myKey"
}
});
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
Thanks
EDIT 3
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);
}
}
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'
}
}
});
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.
store.getUpdatedRecords()
in ExtJs 4 or store.getModifiedRecords()
in ExtJs3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With