2010-05-21 64 views
5

嘿,我需要能够滚动我的ExtJS网格到当前的选择,但不知道如何做到这一点。我在论坛上找到了一个可以确认的方法,但没有找到任何信息。任何人都可以提出建议吗? 谢谢滚动到ExtJS Grid中的选择

回答

1

对不起,我真的很愚蠢。我只是试着ensureVisible,它工作正常。

+0

你已经能够得到这个与ExtJS的4.0工作? – 2011-09-26 18:08:36

+0

@Erik Allik - 我们使用ExtJS 3.4。如果它在4.0中不起作用,我会感到惊讶。 – dave 2011-09-26 18:21:50

9

不幸的是,从ExtJS 4中删除了ensureVisible()。我找到的最直接的解决方案是使用scrollIntoView()。在我的情况下,这是根据我加载的值选择行后。

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

这将显示网格底部的选定行。需要做更多的工作才能将其置于电网的顶部或中部。

+0

感谢您的反馈。 – dave 2012-03-15 22:07:44

+1

你应该使用fly元素来执行像这样的'Ext.fly(grid.getView()。getNode(rowIndex))。scrollIntoView();' – 2013-08-19 17:25:11

+0

好点胡安,我已经更新了它。 – CTarczon 2013-10-03 14:41:03

4

这也似乎工作:

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

谢谢!它为我工作... – 2017-03-24 16:38:58

9

这也似乎工作:

grid.getView().focusRow(rowIdx); 
3

这也似乎工作

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

在ExtJS的4.X没有的情况下,需要使用Ext.fly

+0

scrollIntoViewIfNeeded()不工作在IE9 + – 2015-12-30 09:18:36

+1

'邪恶的IE',scrollIntoViewIfNeeded()在Chrome浏览器中工作,请参考由@bhuvaneswari回答为IE浏览器,也'scrollIntoView()'给出怪异的行为,如果你使用模态窗口 – 2015-12-30 09:28:05

1

为了节省你所有的大量头发拉动,你应该知道在这个线程中滚动查看的解决方案将不会而不是工作如果网格缓冲渲染器被打开。

据我了解,在Ext JS 5中,bufferedRenderer默认打开。

我花了几个小时才明白这一点。

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

1

在ExtJS 6上为我工作,即使启用了bufferedRenderer。

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