【问题标题】:Storing Grid State per User and storing serverside - EXT GWT存储每个用户的网格状态并存储服务器端 - EXT GWT
【发布时间】:2012-10-18 18:11:10
【问题描述】:

所以我一直在寻找有关如何在我的服务器上存储 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 中。我不知道如何将其应用于新会话。如何将此状态图应用于新网格?

【问题讨论】:

  • 澄清一下,您说的是 Ext JS 还是 GXT?您已标记 Ext,但没有 Ext 2.4。
  • 嘿评论!对不起,标签不好。我指的是 Sencha Ext GWT 2.2.4。我猜他们在 3.x 版本中将其重命名为 GXT。但这是 java GWT 库。

标签: java gwt extjs gxt


【解决方案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,请记住这一点。

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多