EXTJS4:获取多个网格的方法,显示来自同一商店的数据,但每个网格具有不同的记录

时间:2012-02-28 19:02:04

标签: grid extjs4

假设在单页上有两个网格,它们具有相同的列,但显示的记录不同。

可能有两种解决方案:

  1. 在渲染网格之前,在商店中使用相同的模型并存储和过滤。 此解决方案中的潜在问题:由于底层存储是相同的,因此第二个网格将是 在第一个网格上渲染过滤器将被删除。

  2. 使用不同的商店定义和模型定义(保持代理和字段与其他商店/模型定义相同,但只是更改名称): 问题:我在Pandora应用程序上尝试了这个,它开始给出奇怪的问题,这样第二个网格没有显示任何记录。

  3. 哪种方法更好,如何解决相应的问题。

    -Thanks

2 个答案:

答案 0 :(得分:1)

我们在项目中遇到了完全相同的问题。我最终使用了以下方法:

  • 您定义了一个模型和一个商店类
  • 从第一个网格的服务器加载存储
  • 使用所有记录克隆商店对象(您可能想要谷歌如何做到这一点)
  • 此时您需要决定是否只需要一个与服务器上相同数据源绑定的本地副本或副本 - 两者都可以根据您的需要实现

如果您需要,我可以发布一些示例代码进行克隆。

更新

以下是克隆商店对象的代码示例:

cloneStore: function(store, storeClass) {
    var new_st = Ext.create(storeClass),
        recs = [],
        filter;

    store.each(function(r) {
        recs.push(r.copy)}
    );
    new_st.add(recs);

    return new_st;
},

答案 1 :(得分:0)

我采取并建议的方法不是引用商店的相同实例,而是为每个网格创建商店的新实例:

store:Ext.create('MyStore',{...});