I have a dojo.store.Memory wrapped in a dojo.data.ObjectStore which I am then plugging into a dataGrid. I want to delete an item from the store and have the grid update. I have tried every combonation I can think of with no success. For example:
var combinedStore = new dojo.data.ObjectStore({objectStore: new dojo.store.Memory({data: combinedItems})});
combinedStore.fetch({query:{id: 'itemId'}, onComplete: function (items) {
var item = items[0];
combinedStore.deleteItem(item);
combinedGrid.setStore(combinedStore);
}});
combinedGrid.setStructure(gridLayout);
This throws no errors but combinedStore.objectStore.data still has the item that was meant to be deleted and the grid still displays the item. (The also seems to be a complete mismatch between combinedStore.objectStore.data and combinedStore.objectStore.index);
There’s a simple solution, luckily! The delete is successfully happening, however, you need to
savethe ObjectStore after the deletion for it to be committed.Change your code to look like this:
That little save should do the trick. (Please note: the save must occur after the deleteItem – if you put it outside the
fetchblock, do to being asynchronous, it will actually happen before the onComplete!)Working example: http://pastehtml.com/view/b34z5j2bc.html (Check your console for results.)