滚动到ExtJS网格中的选择

时间:2010-05-21 15:17:02

标签: extjs grid

嘿,我需要能够将我的ExtJS网格滚动到当前选择,但不知道如何做到这一点。我在论坛中发现了一个关于ensureVisible方法的引用,但是找不到任何信息。有人可以提出任何建议吗? 感谢

8 个答案:

答案 0 :(得分:9)

不幸的是,从ExtJS 4中删除了ensureVisible()。我发现最直接的解决方案是使用scrollIntoView()。就我而言,这是在根据我加载的值选择行之后。

var rowIndex = store.find('fieldName', value);
grid.getSelectionModel().select(rowIndex);
Ext.fly(grid.getView().getNode(rowIndex)).scrollIntoView();

这将显示网格底部的选定行。需要做更多的工作才能将它放在网格的顶部或中间。

答案 1 :(得分:9)

这似乎也有效:

grid.getView().focusRow(rowIdx);

答案 2 :(得分:5)

这似乎也有效:

    grid.getView().getRow(rowIdx).scrollIntoView();

答案 3 :(得分:4)

在ExtJS 6上为我工作,即使打开了bufferedRenderer。

        var record = grid.getSelectionModel().selected.getRange()[0];
        grid.getView().focusRow(record);

答案 4 :(得分:3)

这似乎也有效

grid.getView().getNode(rowIndex).scrollIntoViewIfNeeded();

对于ExtJs 4.X无需使用Ext.fly

答案 5 :(得分:2)

对不起,我真的很蠢。我刚尝试了EnsureVisible,它运行正常。

答案 6 :(得分:1)

为了节省大量的头发,你应该知道如果打开网格 bufferedRenderer ,此线程中用于滚动到视图的解决方案将工作。

据我所知,在Ext JS 5中,默认情况下会启用bufferedRenderer。

在我意识到这一点之前我花了几个小时。

grid.getView()。如果索引行在缓冲行之外,则getNode(rowIndex)将返回NULL。

答案 7 :(得分:0)

至少在4.2中,如果你在bufferedRenderer中的缓冲范围之外,则使用scrollIntoViewIfNeeded会失败。 bufferedRenderer有一个方便的scrollTo方法来帮助完成这项任务:

grid.getView().bufferedRenderer.scrollTo(index, true);
  

滚动到并选择在总数据集中选择指定的行索引。

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.grid.plugin.BufferedRenderer-method-scrollTo