行在网格刷新时消失

时间:2014-10-01 15:29:30

标签: extjs extjs4.2

我花了好几个小时试图找出这种情况发生的原因。我不确定我的代码中是否有错误或者这是否是ExtJS错误。

我有一个网格,其中有大约7000行,所以它非常大。我修改了网格中列的所有单元格中的某些内容,然后执行 grid.getView()。refresh()。很简单,这一切都发生在客户端。

然而,每当调用 grid.getView()。refresh()时,大约80%的行都会消失!

代码看起来像这样:

handler = function () {

    for (var j = 0; j < myGrid.store.data.items.length; j++) {

        var outlet = myGrid.store.data.items[j].data;

        outlet['field'] = 'Hey';
    }

    myGrid.getView().refresh();
}

我甚至将其简化为:

handler = function () {
  myGrid.getView().refresh(); 
}

问题仍然存在!!!

不幸的是,由于数据集较大,我不能在jsfiddle中复制它。

我正在使用 bufferedRenderer 插件,该插件设置为:

this.plugins = {
    ptype: 'bufferedrenderer',
    trailingBufferZone: 20,  // Keep 20 rows rendered in the table behind scroll
    leadingBufferZone: 50   // Keep 50 rows rendered in the table ahead of scroll
};

这是否有效果我不知道。

有谁知道这可能是什么?我接下来的步骤可以推断出这个问题吗?

更新:它似乎与bufferedrenderer有关。如果我将其停用,则不会出现问题。

另外我没有提到的是刷新的表隐藏在选项卡式窗格后面。所以本质上也许bufferedRenderer意识到它不重要因为它隐藏了,或者......我不知道。它只是让bufferedRenderer感到困惑。

更新:这是一个解决问题的小提琴。第二个选项卡中大约有5000行。当我单击第一个选项卡中的刷新按钮时,90%的行都会消失。

http://jsfiddle.net/4nupbosf/5/

有时问题不会发生。但最终它会。继续尝试。

1 个答案:

答案 0 :(得分:1)

tabpanel的高度未定义,因此它为零,因此网格高度也是如此。你只看不到行,它们就在那里,只需在tabpanel上添加一个高度。

然后,小提琴中的所有记录都具有相同的ID - 它不可能。

然后,您使用new关键字创建商店,这可能会导致一些问题,但不一定。

然后,在上面的代码中,您可以使用data属性直接访问记录数据。你永远不应该这样做。请改用record.set('fieldName', newValue)