ExtJS 3.4:Grid不会自动保存和恢复状态.我做错了什么



我有一个Ext 3.4网格,其中有stateful:true,一个stateId,列模型中的每一列都有一个id。

然而,当我调整列的大小时,我看不到任何状态cookie被保存,并且在重新加载页面时不会恢复列宽。我确实有一个定义了cookie提供程序的状态管理器,我可以通过状态管理器设置/获取cookie值。

我还添加了beforeestave和statesave的处理程序,它们正在被调用,但仍然没有保存cookie,也没有恢复状态。这些处理程序也被传递了正确的参数——columns参数在转储到控制台时显示正确的更新宽度。

我的问题是:我做错了什么吗?我不应该期望这是自动的吗?我真的必须使用这些状态事件来手动保存和恢复状态吗?

我自己也遇到过这个问题,经过大约2个小时的努力才解决。

你有一个相当大的网格吗?如果cookie数据超过4k,如果你有20多列的数据,它将很容易做到这一点,它将不会保存。它也不会出错。

我想这里唯一的其他选择是去另一个州的提供者那里。我将看看Saki慷慨地提供的httpProvider作为替代方案。

编辑:

我试图覆盖提供程序,并在保存cookie时删除字符串转义。这将尺寸减小约50%。不过,在尝试恢复时,我似乎无法消耗它。我确信Ext的作者这样做是有原因的,否则就没有意义了,因为它会让饼干膨胀太多。黑客就这么多了。

为了使GridPanel有状态,我刚刚在配置中添加了stateful:true,并在创建任何对象之前设置我的提供者

Ext.state.Manager.setProvider(new Ext.state.CookieProvider({
   expires: new Date(new Date().getTime()+(1000*60*60*24*30)) // 30 days
}));

我还没有测试它是否记得宽度,但试着移动列和排序顺序,看看它们是否被记住了。

最新更新