Hi
At the moment when I remove a row - it reappears on the client side - refreshing the page I see it has indeed been deleted
Adding a store.reload in the method means it appears again and then disappears when the store is reloaded
Any help appreciated
// The DataWriter component. var writer = new Ext.data.JsonWriter({ encode : false })
Ext.namespace('codeblender');
codeblender.app = function() { /** * Render the ground links * * @param val * @param p * @param record * @return */ function rendererGroundLink(val, p, record) { var string = record.data.ground; var newContent = string.replace(/ /g, '-');
return('<a href="venues/' + newContent.toLowerCase() + '/" target="_new">' + record.data.ground + '</a>');
}
// Public space
return {
// Public methods
init: function()
{
// !Create the data store
var store = new Ext.data.JsonStore({
fields : [
{ name: 'id', type: 'int' },
{ name: 'division_id', type: 'int' },
{ name: 'competition', type: 'string' },
{ name: 'date', type: 'date', dateFormat: 'Y-m-d' },
{ name: 'time', type: 'time' },
{ name: 'referee', type: 'string' },
{ name: 'ground', type: 'string' },
{ name: 'team_a', type: 'string' },
{ name: 'score_a', type: 'string' },
{ name: 'scorer_a', type: 'string' },
{ name: 'team_b', type: 'string' },
{ name: 'score_b', type: 'string' },
{ name: 'scorer_b', type: 'string' }
],
idProperty : 'id',
messageProperty : 'message',
pruneModifiedRecords : true,
remoteSort : true,
restful : true,
root : 'data',
sortInfo : {
field : 'date',
direction : "DESC"
},
successProperty : 'success',
totalProperty : 'totalCount',
url : '/restfixture',
writer : writer
});
store.load({params:{start:0, limit:50, sort:'date', dir:'DESC'}});
// !Create the Team data store
var storeTeam = new Ext.data.JsonStore({
baseParams : { status : 'Active' },
fields : [
{ name : 'id', type: 'int' },
{ name : 'team', type: 'string' }
],
restful : true,
root : 'data',
sortInfo : {
field : 'team',
direction : "ASC"
},
url : '/restteam'
});
// !Create the Ground data store
var storeGround = new Ext.data.JsonStore({
fields : [
{ name : 'id', type: 'int' },
{ name : 'ground', type: 'string' }
],
restful : true,
root : 'data',
url : '/restground'
});
// !Create the Referee data store
var storeReferee = new Ext.data.JsonStore({
fields : [
{ name : 'id', type: 'int' },
{ name : 'referee', type: 'string' }
],
restful : true,
root : 'data',
url : '/restreferee'
});
// !Create the column model
var columns = [
{ header: 'Division', sortable: true, dataIndex: 'division_id', width: 75,
editor : {
allowBlank : false,
editable : false,
lazyRender : true,
mode : 'local',
store : [[1,'Division 1'], [2,'Division 2'], [3,'Division 3']],
triggerAction : 'all',
xtype : 'combo'
}
},
{ header: 'Competition', sortable: true, dataIndex: 'competition',
editor : {
allowBlank : false,
editable : false,
lazyRender : true,
mode : 'local',
store : ['Season 8','Cup 8','Season 7','Cup 7','Season 6','Cup 6','Season 5','Cup 5','Season 4','Cup 4','Season 3','Cup 3','Season 2','Cup 2','Season 1','Cup 1'],
triggerAction : 'all',
xtype : 'combo'
}
},
{ header: 'Date', sortable: true, dataIndex: 'date', xtype: 'datecolumn', format: 'Y-m-d', width: 100,
editor: {
allowBlank : false,
editable : true,
emptyText : 'Date',
format : 'Y-m-d',
xtype : 'datefield'
}
},
{ header: 'Time', sortable: false, dataIndex: 'time',
editor: {
allowBlank : false,
editable : false,
format : 'H:i:s',
increment : 5,
minValue : '09:00:00',
xtype : 'timefield'
}
},
{ header: 'Referee', sortable: true, dataIndex: 'referee',
editor : {
allowBlank : false,
displayField : 'referee',
editable : false,
emptyText : 'Select Referee',
forceSelection : true,
lazyRender : true,
mode : 'remote',
store : storeReferee,
triggerAction : 'all',
valueField : 'id',
xtype : 'combo'
}
},
{ header: 'Ground', sortable: true, dataIndex: 'ground', renderer: rendererGroundLink,
editor : {
allowBlank : false,
displayField : 'ground',
editable : false,
emptyText : 'Select Ground',
forceSelection : true,
lazyRender : true,
mode : 'remote',
store : storeGround,
triggerAction : 'all',
valueField : 'id',
xtype : 'combo'
}
},
{ header: 'Team A', sortable: true, dataIndex: 'team_a',
editor : {
allowBlank : false,
displayField : 'team',
editable : false,
emptyText : 'Select Team A',
forceSelection : true,
lazyRender : true,
mode : 'remote',
name : 'team',
store : storeTeam,
triggerAction : 'all',
valueField : 'id',
xtype : 'combo'
}
},
{ header: 'Score A', sortable: true, dataIndex: 'score_a',
editor: {
xtype: 'spinnerfield'
}
},
{ header: 'Scorer A', sortable: false, dataIndex: 'scorer_a',
editor: {
xtype : 'textarea'
}
},
{ header: 'Team B', sortable: true, dataIndex: 'team_b',
editor : {
allowBlank : false,
displayField : 'team',
editable : false,
emptyText : 'Select Team B',
forceSelection : true,
lazyRender : true,
mode : 'remote',
name : 'team',
store : storeTeam,
triggerAction : 'all',
valueField : 'id',
xtype : 'combo'
}
},
{ header: 'Score B', sortable: true, dataIndex: 'score_b',
editor: {
xtype : 'spinnerfield'
}
},
{ header: 'Scorer B', sortable: false, dataIndex: 'scorer_b',
editor: {
xtype : 'textarea'
}
}
];
// Create the pager
var pagingBar = new Ext.PagingToolbar({
displayInfo : true,
displayMsg : '{0} - {1} of {2}',
emptyMsg : 'No Data',
pageSize : 50,
store : store
});
// Create the Grid
var grid = new xg.GridPanel({
bbar : pagingBar,
columns : columns,
height : 500,
iconCls : 'icon-grid',
loadMask : {msg: 'Loading data.', enabled: true},
plugins : [rowEditor],
renderTo : 'dbGrid',
sm : new Ext.grid.RowSelectionModel({singleSelect:true}),
store : store,
stripeRows : true,
tbar : [{
text : 'Add',
iconCls : 'icon-add',
handler : function() {
var record = new store.recordType({
division_id : 1,
date : (new Date()).clearTime(),
time : '10:00:00',
referee : '',
ground : '',
team_a : '',
score_a : '',
team_b : '',
score_b : ''
});
grid.suspendEvents();
rowEditor.stopEditing();
grid.store.insert(0, record);
grid.getView().refresh();
grid.getSelectionModel().selectRow(0);
rowEditor.startEditing(0);
grid.resumeEvents();
}
},{
iconCls : 'icon-del',
text : 'Remove Fixture',
handler : function() {
rowEditor.stopEditing();
grid.suspendEvents();
var record = grid.getSelectionModel().getSelected();
if (record) {
store.remove(record);
}
store.reload({}, true);
grid.resumeEvents();
}
}],
title : 'Fixtures',
viewConfig : {
forceFit : true
}
});
}
};
}();