2013-10-18 54 views
0

我有一個ScrollTable,它是動態填充的。 (行和列在飛行中計算並填充數據)。我的ScrollTable支持水平和垂直滾動。當我有很多列並且水平滾動查看數據時,我看到在呈現Header & DataTables的方式中存在未對齊。我懷疑GWT渲染髮生緩慢,這是造成這個問題。GWT ScrollTable問題:使用水平滾動時,滾動表的標題和數據表格不對齊

這裏去代碼:

public class TestScrollTable implements EntryPoint { 

    public FixedWidthGrid dataTable = new FixedWidthGrid(200,20); 
    public FixedWidthFlexTable headerTable = new FixedWidthFlexTable(); 
    public ScrollTable table = new ScrollTable(dataTable, headerTable); 

    @Override 
    public void onModuleLoad() { 

     table.setColumnResizePolicy(ColumnResizePolicy.SINGLE_CELL); 
     table.setResizePolicy(ResizePolicy.UNCONSTRAINED); 
     table.setScrollPolicy(ScrollPolicy.BOTH); 
     table.setSortPolicy(SortPolicy.SINGLE_CELL); 
     RootPanel.get().add(table); 

     for (int i = 0; i < 20; i++) { 
      headerTable.setHTML(0, i, "Header " + i); 
     } 

     for (int i = 0; i < 200; i++) { 
      for (int j = 0; j < 20; j++) { 
       final int row = i; 
       final int column = j;       
       dataTable.setHTML(row, column, "Cell " + row + ":" + column); 
      } 
     } 
     table.redraw(); 
    } 

} 

問題並不總是可見。當我們運行上面的代碼並通過遠程桌面使用Web應用程序時,以及有時在應用程序的已部署版本中(當我有很多列並且需要水平滾動時),我們會看到它。數據的分頁和排序已經被處理。

我有以下解決方案作爲一種解決方法:

當我調整頭表,整個ScrollTable得到正確對齊。但是,如果以編程方式完成這可能是一個性能問題。 如果我們導航到其他瀏覽器選項卡並返回,則看不到問題。

附加信息:

  1. 我已經嘗試運行使用GWT CSS爲ScrollTable插件的上面的代碼,並使用我的自定義CSS。
  2. 在重新繪製ScrollTable之前,已嘗試使用DeferredCommand。 上述情況並未產生任何結果。

我的應用程序使用GWT 2.0.4。

回答

0

FixedWidthGridFixedWidthFlexTableScrollTable不是GWT庫的小部件,我想他們是在你的應用程序使用GWT孵化器這是一個過時的項目中使用很久以前和widgets新事物播放或沒有集成到GWT 。

現代GWT版本包括改進的表格小部件,如CellTable,它沒有這個問題。我鼓勵你將你的應用程序遷移到最後一個gwt,因爲:gwt-2.0.4在幾年前發佈,而gwt-incubator沒有維護,所以很難從它們那裏獲得支持,我知道遷移可能很難任務,但我認爲這是值得的。在gwt郵件列表中看看這個thread