2014-09-24 45 views
0

如果我嘗試對不在視圖中的列進行排序(我需要向右滾動以查看它) 然後該列進行排序,但表格會向左滾動,(我排序的列是拿出來看一次)GXT 3 - 排序會導致網格水平滾動

人們可以在GXT展示的Basic Gid試試這個: 就做出了較大的列的寬度,使水平滾動條顯示出來,然後嘗試在滾動表的結尾和排序。

如何解決這個問題?

感謝

回答

2

這是我如何解決它: 覆蓋的GridViewonDataChanged並設置preventScrollToTopOnRefresh爲true排序前,然後將其設置回不管它是什麼。我想知道爲什麼這不是默認行爲。

final GroupSummaryView<Row> view = new GroupSummaryView<Row>() 
{ 
     protected void onDataChanged(StoreDataChangeEvent<Row> se) 
     { 
      boolean b = preventScrollToTopOnRefresh; 

      preventScrollToTopOnRefresh = true; 

      super.onDataChanged(se); 

      preventScrollToTopOnRefresh = b;    
     } 
}; 

_table.setView(view); 
1

有沒有內置的功能,以防止這種行爲,所以你要自己編寫。你只需要滾動狀態存儲分揀之前和之後的恢復:

// save scroll state 
final int scrollTop = getView().getScroller().getScrollTop(); 
final int scrollLeft = getView().getScroller().getScrollLeft(); 

// restore scroll state 
getView().getScroller().setScrollTop(scrollTop); 
getView().getScroller().setScrollLeft(scrollLeft); 
+0

問題在於它導致網格來回滾動。 – Spiff 2014-10-23 15:52:45

+0

不幸的是,這是真的。我必須嘗試你的解決方案,目前看起來不錯;) – 2014-10-24 11:29:21

0

@Darek凱:非常感謝。從EditorTreeGrid中選擇數值更改選項時,我遇到了向下滾動的問題。你的建議對我有用。以下是我所做的和爲我工作的:

final int scrollTop = editorTreeGrid.getView().getScroller().getScrollTop(); 
    final int scrollLeft = ditorTreeGrid.getView().getScroller().getScrollLeft(); 

    editorTreeGrid.getView().refresh(true); 

    editorTreeGrid.getView().getScroller().setScrollTop(scrollTop); 
    editorTreeGrid.getView().getScroller().setScrollLeft(scrollLeft);