cbg3
17 Feb 2008, 5:55 PM
If you've used the state.Manager class to store the state of a grid that uses a GroupingStore, you may have noticed that the grouping of the grid doesn't get restored as from the state. You may also have also found it hard to figure out from the docs what event gets fired when the grouping of a grid is changed. Below is an example of how you can use an event handler on the grid's refresh event to store the grouping state of the grid, and restore it when the grid is loaded.
var DEFAULT_GROUP_FIELD = 'Department';
var stateProvider = new Ext.state.CookieProvider();
Ext.state.Manager.setProvider(stateProvider);
var getGroupField = function()
{
var field = stateProvider.get('groupField');
if (field)
return field;
else
return DEFAULT_GROUP_FIELD;
}
var gridDS = new Ext.data.GroupingStore({
...
groupField: getGroupField()
});
var groupingView = new Ext.grid.GroupingView({
...
});
groupingView.on('refresh', function(view)
{
stateProvider.set('groupField', view.getGroupField());
});
var DEFAULT_GROUP_FIELD = 'Department';
var stateProvider = new Ext.state.CookieProvider();
Ext.state.Manager.setProvider(stateProvider);
var getGroupField = function()
{
var field = stateProvider.get('groupField');
if (field)
return field;
else
return DEFAULT_GROUP_FIELD;
}
var gridDS = new Ext.data.GroupingStore({
...
groupField: getGroupField()
});
var groupingView = new Ext.grid.GroupingView({
...
});
groupingView.on('refresh', function(view)
{
stateProvider.set('groupField', view.getGroupField());
});