0
我與本地商店有一個小網格,每當我更新該商店中的數據時,該商店中的記錄更新,但更新的記錄是添加在網格中而不是替換舊的。Extjs網格和本地商店在網格中創建重複項,同時更新商店
網:
Highlights: Ext.create('Ext.grid.GridPanel',{
store:Ext.create('Ext.data.Store', {
fields: [
{name: 'id', type: 'string'},
{name: 'QUANTITY', type: 'int'},
{name: 'HIGHLIGHT', type: 'string'},
{name: 'ICON', type:'string'},
{name: 'PRIORITY', type:'int'},
{name: 'GROUPICON', type:'string'},
],
sorters:['PRIORITY','QUANTITY'],
data : []
}),
hideHeaders:true,
columns:[{
header:'Icon',
dataIndex:'ICON',
width:22,
stateId:'ICON',
renderer:function(val){
if(val != ''){
return '<img src=icons/cq/'+val+'.png align=absmiddle border=0>';
}else{
return '';
}
}
},{
header: 'Quantity',
dataIndex: 'QUANTITY',
stateId:'QUANTITY',
width:35,
align:'right',
sortable: true,
hidden: false
},{
header: 'Highlight',
dataIndex: 'HIGHLIGHT',
stateId:'HIGHLIGHT',
renderer:function(val){
return '<b>'+val+'</b>';
},
flex:1,
sortable: true,
hidden: false
},{
header:'Group Icon',
dataIndex:'GROUPICON',
width:28,
stateId:'GROUPICON',
renderer:function(val){
if(val != ''){
return '<img src=icons/cq/'+val+'.png align=absmiddle border=0>';
}else{
return '';
}
}
}],
title:'I have...',
iconCls:'topic',
padding:'0 0 8 0'
})
添加/更新記錄:
Highlight:function(store,id,highlight,icon,priority,groupicon){
//SET VALUES
if(typeof icon == 'undefined'){ var icon = '';}
if(typeof priority == 'undefined'){ var priority = 9;}
var quantity = store.data.length;
//ADD/UPDATE
if(quantity>0){
this.Grids.Highlights.getStore().add({PRIORITY:priority,ICON:icon,GROUPICON:groupicon,QUANTITY:quantity,HIGHLIGHT:highlight,id:id});
}
}
正如你可以看到有一個 「id」 字段和ID正確地使用ExtJS的更新商店。
如果我觸發3次相同的'add()'到商店,我在網格中得到3個相同的行,同時商店中仍然只有一條記錄。
爲什麼?
謝謝!
我很驚訝。我認爲這是一個錯誤。當我在商店中使用add()時,它實際上更新了商店中的記錄(在那裏沒有重複,所以它檢測到id密鑰並用更新的數據覆蓋正確的記錄),所以爲什麼會有重複在網格?我添加了「this.Grids.Highlights.getView()。bindStore(this.Grids.Highlights.getStore());」添加()後,一切都很好,但我知道這是一個醜陋的補丁... – ImShogun