【问题标题】:EXTJS4: Approch to take for multiple Grids showing data from same store but each grid having different recordsEXTJS4:采用多个网格显示来自同一商店的数据但每个网格具有不同记录的方法
【发布时间】:2015-07-09 01:28:30
【问题描述】:

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

可能有两种解决方案:

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

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

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

-谢谢

【问题讨论】:

  • Sha 的方法绝对不是好方法......它有效,但它不是实现这一目标的最佳方法!我也推荐 DmitryB 的解决方案。如果第二个网格没有加载,也许你忘了在第二个商店调用 load() ?
  • 看起来唯一的方法就是创建另一个商店??嗯……

标签: grid extjs4


【解决方案1】:

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

  • 你定义一个模型和一个商店类
  • 从服务器为第一个网格加载存储
  • 克隆包含所有记录的存储对象(您可能想通过 Google 了解具体操作方法)
  • 此时您需要决定是只需要本地副本还是需要绑定到服务器上相同数据源的副本 - 两者都可以根据您的需要实现

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

更新

这是克隆存储对象的代码示例:

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;
},

【讨论】:

  • “如果您需要,我可以发布一些用于克隆的示例代码。”:我知道这是旧的,但我想看一些代码?
【解决方案2】:

我采用和推荐的方法不是引用相同的商店实例,而是为每个网格创建一个新的商店实例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-26
    • 2011-09-11
    • 1970-01-01
    • 2014-09-06
    • 2014-06-21
    • 2019-11-17
    • 2013-07-26
    • 1970-01-01
    相关资源
    最近更新 更多