我正在尝试使用store.loadData(data, true)
将数据附加到现有商店,但由于某种原因,它正在清除商店并将其替换为新数据,只有当布尔值设置为false时才会将其替换为不。我需要做些什么才能确保将数据附加到旧数据而不是完全替换它?
编辑附加代码。目前,我正在从网格中拉出一行并创建一个新窗口,其中包含从数据库中提取的该对象的附加信息。我们的想法是,所有可能的行数据都存储在一个商店中,然后当窗口出现时,商店会添加一个过滤器,以便您只能看到与该特定对象相关的数据。在某些时候,我迭代网格中的每个对象,并检查它是否具有已编辑的数据。如果我只有来自最后一个被编辑对象的数据,那么这是一个问题。
editSelectedNode: function(grid, rowIndex, colIndex){
var store = Ext.getStore('EditStore');
var win = Ext.create('BOMGeneratorSencha.view.EditMenu', {});
var item = grid.getStore().getAt(rowIndex).get('original');
console.debug(item);
win.show();
var el = win.getEl();
store.clearFilter(true);
console.debug(store.getCount());
if(store.getCount() == 0){
el.mask('Loading Values');
console.debug(store.getCount());
Ext.Ajax.request({
url : 'EditPart.jsp',
timeout: 300000,
params : {
item: item
},
success: function (response, opt) {
el.unmask();
var res = Ext.JSON.decode(response.responseText);
if (res.success) {
console.debug(res.results);
store.loadData(res.results,true);
console.debug(store);
}
else {
console.debug("JSON failure");
Ext.Msg.alert('Error', 'Invalid part number');
}
},
failure: function(response,options){
console.debug("major failure");
el.unmask();
Ext.Msg.alert('Error', 'Connection failed<br>' + response.responseText);
}
});
}
}
答案 0 :(得分:0)
我有一个类似于你的代码。但是当我得到回应时,我不会使用
store.loadData(someData)
而是我使用以下步骤来加载数据(我的代码放在这里):
success: function(response, opts){
var obj = Ext.decode(response.responseText)
,data = obj.data
,$ = Ext.ComponentQuery;
var store = Ext.create('MyApp.store.SomeStore',{
data : data
});
$.query('SomeGrid')[0].bindStore(store);
$.query('SomeGrid')[0].refresh();
}