2013-04-22 73 views
0

我目前有一個CellTable,我通過過濾/分頁/排序進行了擴展。 我正在努力增加更多功能。CellTable中的GWT填充行

但是,有一件事情讓我感到迷惑,例如,當您將頁面的限制設置爲例如10時。 如果一個對象沒有10行並且只有5個並且您在它們之間切換,那麼表格將跳轉如果放置在中心位置,則上下。

有沒有一種優雅的方式,當pageSize設置爲10,那麼如果表中少於10行,空行將被添加?

到目前爲止我嘗試過的方法會影響我的過濾/排序/分頁,這是我不想要的。

編輯1:

final AsyncDataProvider<Row> provider = new AsyncDataProvider<Row>() { 

     @Override 
     protected void onRangeChanged(HasData<Row> display) { 

     int start = display.getVisibleRange().getStart(); 
     int end = start + display.getVisibleRange().getLength(); 
     end = end >= rows.getFilterList().size() ? rows.getFilterList().size() : end; 
     List<Row> sub = rows.getFilterList().subList(start, end); 
     System.out.println("Checking if extra rows needed: " + 
              table.getVisibleItems().size()); 

       for(int i = table.getVisibleItems().size(); i<10; i++){ 
        System.out.println("ADDED EMPTY ROW"); 
        sub.add(new Row()); 
       } 

     updateRowData(start, sub); 
    } 
}; 

回答

1

我有同樣的問題。我通過添加null行來解決它。基本上,您需要在DataProvider中覆蓋onRangeChange(HasData<T> display)以將null添加到代表要求範圍的列表中。你添加足夠的null來填補你想要的範圍。

@Override 
protected void onRangeChanged(HasData<T> display){ 

    Range range = display.getVisibleRange(); 

    List<T> listOfObjects = getRange(range); 

    for(int i=listOfObject.size(); i<range.getLength(); i++){ 
     listOfObjects.add(null); 
    } 

    updateRowData(range.getStart(), listofObjects); 

} 

在上面的代碼getRange()返回包含所請求的對象(範圍內)的列表

您還可以添加一些CSS給予高度行。如果你不指定高度,那麼行將會非常小,因此它們不會填充整個表格。

令人失望的是GWT不支持這種類型的填充。這種方式是我找到的最好的方式,但不幸的是,當你的行高在一張表內不同時,它會使一切變得更加困難。

尋呼

通過該解決方案上面,你就需要有一個自定義Pager,如果你想分頁。你可以用getVisibleRowCount()這樣的方法擴展你的AsyncDataProvider,這將返回當前子列表中有多少個對象實際上是實際數據(而不是null)。然後,你可以給AsyncDataProviderPager參考,並覆蓋createText()方法:

@Override 
protected String createText(){ 

    return getPageStart() + " - " + dataProvider.getVisibileRowCount() + " of " 
       + dataProvider.getTotalRowCount(); 

} 
+0

嘿,我添加了一些代碼,顯示我有它目前所做的那樣。但這會影響分頁,顯示1-10也會影響我的過濾器類。我在想也許有辦法解決它而不影響表格中的數據? – Sheogora 2013-04-22 15:56:17

+0

我建議的方式不會影響分頁。你所要做的就是當範圍沒有被滿足時添加空值,你需要確保你的列知道如何處理空值(顯示空單元格)。 – enrybo 2013-04-22 16:00:57

+0

我試過你的方法,並且尋呼機仍然會說1-10即使有5行有實際的數據,簡單的尋呼機連接到單元格表,所以它有多少行會計算它們? – Sheogora 2013-04-23 08:26:34