Ext JS 4 - 共享同一存储的网格实例

Posted

技术标签:

【中文标题】Ext JS 4 - 共享同一存储的网格实例【英文标题】:Ext JS 4 - Grid instances sharing the same store 【发布时间】:2012-08-20 07:05:48 【问题描述】:

我遇到了一个让我发疯的问题。我创建了一个显示网格的基于窗口的小部件。好的,到目前为止,这没什么特别的,但是,每个网格都必须处理不同的数据。例如:想象一个家庭经纪人,有一个显示股票报价的小部件。因此,实例 A 必须显示 INTC,实例 B 必须显示 CSCO,实例 C 必须显示 FB。但是当我处理实例 A 的 INTC 数据时,实例 B 和 C 的网格也会更新。所以我知道所有网格共享同一个商店。 我已经尝试过动态创建商店,但是没有成功。

问题是,我该怎么做才能分开呢?还有另一种方法来更新没有存储的网格吗?

【问题讨论】:

此信息有帮助吗? ***.com/a/12013880/531940 也许发布一些关于如何定义网格和存储的代码,以及您使用的是哪个版本的 ExtJS? 【参考方案1】:

您需要创建商店的一个实例,您可能这样声明它们:


     xtype: 'grid',
     store: 'theStore'
     // Rest of the properties

你需要做的是:


    xtype: 'grid',
    //column definitions etc...
    initComponent: function() 
        var me = this;
        var lStore = Ext.create('App.store.MyStore');

        Ext.apply(me, 
            store: lStore
        );

        me.callParent();
    
​

这将创建一个唯一的商店实例,如果您像这样引用商店: store: 'MyStore' 您将获得相同的商店,并且当您排序、分页、过滤......所有商店都做同样的事情.

希望这对您有所帮助,因为您没有共享任何代码。

【讨论】:

伙计,感谢您的努力,但仍然无法正常工作。我尝试过您发布的这种方式,并且我一直在尝试尽可能多的修改。即使我创建了一个商店的新实例,结果仍然相同:如果我添加或删除某个项目,所有其他网格都会反映这一点。 确保您没有提供 storeId,并尝试使用 bindStore 方法而不是仅执行 Ext.apply。 那你应该分享一些代码,否则我们帮不了你。

以上是关于Ext JS 4 - 共享同一存储的网格实例的主要内容,如果未能解决你的问题,请参考以下文章

Ext JS 4.1:网格列中的渲染器参数不起作用

EXT JS - 单击传输记录以存储弹出网格面板

Ext JS 4.2 中的分页内存代理等效技术是啥

如何更快地加载多个网格

Extjs:如何将存储记录用作网格的存储

具有远程缓冲存储的 ExtJS 网格无法呈现第一页