2010-05-21 47 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);