我想让用户对ExtJS数据网格的列显示(隐藏,显示,移动,调整大小)进行持久更改并存储在服务器上.有很多事件需要监听,但在网格上注册处理程序本身似乎不会导致调用警报:
grid.on('hide',function(event) { alert('Save column order: column hidden.'); }); grid.on('move',function(event) { alert('Save column order: column moved.'); }); grid.on('resize',function(event) { alert('Save column sizes: column resized.'); }); grid.on('show',function(event) { alert('Save colum order: column shown.'); });
(我的基本方法可能是也可能不是最优的.)
我应该具体做些什么来倾听这些事件?我可以隐藏,移动和调整列的大小而不会触发警报.
解决方法
首先,您需要配置一个
state provider.
CookieProvider是ExtJS内置的唯一一个
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
其次,将yourGridPanel.stateful标记为true
第三,看看是否需要更改GridPanel.stateEvents的默认值
这基本上是“一系列事件,当被触发时,应触发此组件以保存其状态”
第四,HttpStateProvider不是内置ExtJS而是Saki有ux (user extension) for it.
第五,如果要保存多个组件的状态,则应该明确设置id或stateId.
一个好的方法是使用内置的CookieProvider按预期工作,然后切换到Http Provider.