ExtJs 3.3 GridPanel 不再使用缓冲 Http 提供程序恢复列设置
Posted
技术标签:
【中文标题】ExtJs 3.3 GridPanel 不再使用缓冲 Http 提供程序恢复列设置【英文标题】:ExtJs 3.3 GridPanel not restoring column settings with the Buffering Http Provider anymore 【发布时间】:2010-11-10 19:18:34 【问题描述】:我更新到 Ext 3.3,突然我的 GridPanel 的列“width”和“hidden”设置不再恢复,它们保持默认设置。我使用最新版本的Buffering Http Provider。我真的不知道故障的原因,是因为这个State Provider实现还是因为Ext的underyling状态机制。
“保存”设置似乎正常工作,将调用处理程序并将设置正确存储到数据库中。设置也再次从数据库中正确读取,我向客户端的输出包含正确的设置。
我的(部分是服务器生成的)代码最近没有改变,看起来像这样:
var someState = ["name":"someGridPanel","value":"o%3Acolumns%3Da%253Ao%25253Aid%25253Ds%2525253ADate%25255Ewidth%25253Dn%2525253A80%255Eo%25253Aid%25253Ds%2525253AMailSender%25255Ewidth%25253Dn%2525253A100%25255Ehidden%25253Db%2525253A1%255Eo%25253Aid%25253Ds%2525253ASubject%25255Ewidth%25253Dn%2525253A286%255Eo%25253Aid%25253Ds%2525253A ... " ...];
Ext.state.Manager.setProvider(new Ext.ux.state.HttpProvider(saveUrl: 'someHandler.ashx'));
Ext.state.Manager.getProvider().initState(someState);
// later...
var someGridPanel = new Ext.grid.GridPanel("id":"someGridPanel","colModel":someColumnModel, ... );
我错过的状态机制有什么重要的变化吗?文档说,当我为组件设置 id 时,我不需要指定 stateId。但是我看到 Ext 文档中现在有一个以前不存在的 Column 对象。也许这些现在需要一个id?
任何提示和帮助将不胜感激。
【问题讨论】:
【参考方案1】:在forum post 中得到了答案,问题出在 ExtJs 3.3 本身。这个覆盖对我有用:
Ext.override(Ext.grid.ColumnModel,
setState: function (col, state)
Ext.apply(this.lookup[col], state);
);
更新:现在已在 3.3.1 中修复。
【讨论】:
正是我所需要的。非常感谢您跟进您的问题!以上是关于ExtJs 3.3 GridPanel 不再使用缓冲 Http 提供程序恢复列设置的主要内容,如果未能解决你的问题,请参考以下文章
ExtJs - 对列进行排序后使用 CellEditor 的 GridPanel 中的错误
Javascript - ExtJs - GridPanel组件 - 编辑