所以我一直在寻找关于如何在我的服务器上存储EXT分页网格状态的互联网,这样当用户登录他们的网格时,就是他们如何保存它。
我发现了这个http://www.sencha.com/forum/showthread.php?64688-How-can-i-save-Grid-state-using-GXT但它是一个古老而死的线程。
我现在拥有的是:
grid.getState()返回所有col大小,排序和隐藏字段的映射。
这是一个转储到字符串的示例:
{offset = 0,limit = 25,widthfieldname1 = 161,widthfield2 = 110,hiddenfield3 = true}
我可以将这些键/值存储在带有字段(用户名,键,值)的简单表中,然后重新创建此映射并将其传递给前端。
所以这是我的问题:
是否有人拥有为GXT 2.4存储,检索和应用网格状态的完整实现的代码示例?
如果没有。我将如何实施一个?我相信我可以将状态映射存储在数据库或XML中。我对如何将其应用于新会话感到很遗憾。如何将此状态映射应用于新网格?
答案 0 :(得分:1)
状态管理已经构建到许多组件中,也构建到网格中。
默认的GXT实现使用Cookies(看看com.extjs.gxt.ui.client.state.CookieProvider
)来存储Grid的状态,你只需要使网格状态完整并给它一个唯一的stateId:
grid.setStateful(true);
grid.setStateId("myGridUniqueId");
如果需要其他存储,则需要扩展com.extjs.gxt.ui.client.state.Provider
,实现存储/加载逻辑,然后将其传递给com.extjs.gxt.ui.client.state.StateManager
,这将非常简单:
public static class MyProvider extends Provider {
@Override
protected void clearKey(String name) {
// clearing logic
}
@Override
protected String getValue(String name) {
// read logic
}
@Override
protected void setValue(String name, String value) {
// store logic
}
}
StateManager.get().setProvider(new MyProvider());
请注意GXT3中的状态管理is changed,如果您需要在不久的将来迁移到3.0,请记住这一点。