Удаленные / Модифицированные / Добавленные записи из магазина extjs
У меня ниже магазин и модал для сетки в extjs 4.2.
Ext.define('myapp.store.myStore',{
extends:'Ext.data.Store',
modal:'myapp.modal.myModal',
storeId:'myGridStore',
data:[],//used this only when trying inline data
proxy: {
type:'memory',
reader:{
type:'json',
}
}
});
Ext.define('myapp.modal.myModal',{
extends:'Ext.data.Modal',
fields:['bla','blha']
});
Сопоставление с сеткой, хранилищем и модально выглядит хорошо, и данные правильно загружаются в сетку.
Проблема в том, когда в магазине есть модификации вроде
grid.getStore().removeAt(rowIndex)
или же
grid.getStore().add(record)
я не могу получить их через
getRemovedRecords()
а также
getNewRecords()
когда я загружаю данные в магазин с
grid.getStore().loadData(ajaxCallResponse).
Это работает нормально, когда я даю данные в строке.
Пожалуйста, помогите мне понять, что я делаю не так...
3 ответа
if(record.phantom != true){
record.phantom = true;
}
store.loadData(record);
Сначала убедитесь, что phantom равен true, а затем loadData, и попробуйте использовать store.getNewRecords(), если phantom равен true, в getNewRecords () будут присутствовать только записи.
Попробуйте вместо этого store.getModifiedRecords(). Это даст вам новые и отредактированные записи. Чтобы проверить, является ли это новой записью, просто проверьте свойство "phantom" records, которое будет равно true.
также, если getNewRecords () и getRemovedRecords () не возвращают какие-либо записи, попробуйте store.sync () после добавления / удаления записи.
При добавлении новой записи в хранилище мне пришлось установить для атрибута фантома значение true (как предложено @Naren Sathya в предыдущем ответе), чтобы метод getModifiedRecords() фактически перечислял эти вновь добавленные записи:
// Create a new default record
var newServerConfig = new App.model.mConfigServer({
id: idForNewRecord,
server: 'server',
port: 8443,
username: 'user',
password: ''
});
/* Setting the phantom property to 'true' will ensure this record will be listed
* when trying to retrieve those new records with store.getModifiedRecords() later on
*/
newServerConfig.phantom = true;
// Add it to the store
storeServers.add(newServerConfig);