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 中的错误

ExtJS 3.4.0 GridPanel 有条件地禁用行

ExtJS GridPanel 宽度

Javascript - ExtJs - GridPanel组件 - 编辑

在 ExtJS GridPanel 上使用 RowEditor 扩展时显示问题

EXTJS 更改 GridPanel 行选择的默认行为