由於凱姆指出,這很煩人的scrollIntoView後的「scrollToRight」的效果。在我之後,凱姆的解決方案比基礎解決方案提供了更好的行爲,因爲通常表格中的第一列更有意義。 我改進了一點他的方法,它通過在應用滾動然後滾動它之前計算左邊的第一個可見列,水平滾動到我們希望可見的那一行的第一列。
最後一點:列絕對左側是針對「51」進行測試的。這是我通過在瀏覽器的開發工具中查看JS值「實驗性」找到的值,我認爲這取決於表的樣式,您可能需要更改/計算它。
代碼如下:
public void scrollIntoView(T next) {
int index = datagrid.getVisibleItems().indexOf(next);
NodeList<TableCellElement> cells = datagrid.getRowElement(index).getCells();
int firstVisibleIndex = -1;
for(int i=0; i<cells.getLength() && firstVisibleIndex<0;i++)
if(UIObject.isVisible(cells.getItem(i)) && (cells.getItem(i).getAbsoluteLeft() > 51) && (cells.getItem(i).getAbsoluteTop() > 0))
firstVisibleIndex = i;
cells.getItem(firstVisibleIndex>=0? firstVisibleIndex : 0).scrollIntoView();
}
感謝您的建議。這工作正常。以下是完整的代碼: dataGrid.getRowElement(dataGrid.getVisibleItems()。indexOf(MyObject))。scrollIntoView(); –