ExtJs 4.1 网格的分组功能启用和禁用问题

Posted

技术标签:

【中文标题】ExtJs 4.1 网格的分组功能启用和禁用问题【英文标题】:ExtJs 4.1 grid's grouping feature enabling and disabling issue 【发布时间】:2013-11-20 08:41:52 【问题描述】:

我正在使用 ExtJs 4.1。我的应用程序有两个网格。两个网格都具有分组功能(我使用了两个独特的分组功能)。 两个网格都使用单一商店。每个网格都有两个按钮,用于启用和禁用分组功能。这一切都很好。

问题:当我在一个网格中禁用分组功能并打开第二个网格时,即使网格和分组功能不同,第二个网格中的分组功能也会被禁用。我不确定这种行为的原因是什么。

请使用此fiddle 重现问题并查看代码。

Use fiddle to see the code

谢谢!!!1

【问题讨论】:

【参考方案1】:

这可行...http://jsfiddle.net/WRTM3/1/

Ext.define('myKindOfStore');
var store1 = Ext.create('myKindOfStore');
var store2 = Ext.create('myKindOfStore');

似乎分组功能实际上是在网格后面的存储上执行的。由于您在两个网格中使用相同的商店,因此每个分组插件就像控制同一个灯泡的两个不同的灯开关......

如果您想分离网格行为,只需定义一个新商店并为每个网格创建两个单独的商店实例(请参阅我的 jsfiddle fork)

这样,grid1=store1 上的所有操作都不会影响 grid2=store2,包括过滤、排序等。

希望这是你想要的 :-)

【讨论】:

感谢您的回复。但是我不明白当您清除网格的分组然后关闭主窗口然后再次打开网格时,为什么禁用分组功能?当我关闭窗口时,我假设网格也与组特征一起被破坏。现在,当我打开窗口(加载网格)时,网格应该启用了分组功能。 首先,关闭和销毁窗口是有区别的。只有后者会使相关设置“被遗忘”。但是,在您的示例中,您正在定义/创建商店。该商店绝不会被破坏(您不能关闭商店-至少不能在编程中:-)。在您的网格中,您正在引用商店。当您激活分组时,该命令将传递到引用的存储。看看这个:jsfiddle.net/W4UR5 这是你的代码,窗口不是模态的。并排打开两个并更改其中一个的分组>另一个也将更改 这样看:grid view 只是作为它后面的 store 的控制界面。如果单击列标题进行排序,则网格会告诉存储:“按 X 列排序”,然后存储按排序顺序返回所有数据,并且网格会更新其内容。但是一个商店可以同时被多个视图使用。当商店发生变化时,它们都会被更新(过滤、排序、分组)——无论哪个视图触发了变化。 有道理。谢谢你的解释。

以上是关于ExtJs 4.1 网格的分组功能启用和禁用问题的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJs 4.1 中使用一个网格作为分组网格和普通网格

如何在 ExtJS 4.1 中禁用网格中的某些行

ExtJs 4.1 网格远程排序客户端事件

如果网格为空,Extjs 4 禁用排序

ExtJs 5 动态网格分页

ExtJs 4.1.0 缓冲网格 + 本地排序/过滤