1

私は現在CellTable、フィルター/ページング/ソートで拡張した を持っています。私もより多くの機能を追加することに取り組んでいます。

ただし、1 つのページの制限をたとえば 10 に設定すると、1 つの問題が発生します。オブジェクトに 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);
     }
};
4

1 に答える 1

2

私も同じ問題を抱えていました。行を追加することで解決しましたnull。基本的に、要求された範囲を表すリストに追加するには、をオーバーライドonRangeChange(HasData<T> display)する必要があります。必要な範囲を満たすのに十分な量を追加します。DataProvidernullnull

@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上記のソリューションでは、ページングが必要な場合はカスタムが必要です。AsyncDataProviderこのように with メソッドを拡張するとgetVisibleRowCount()、現在のサブリスト内の実際のデータ (ではないnull) であるオブジェクトの数が返されます。次に、AsyncDataProviderへの参照を与えて、メソッドPagerをオーバーライドできます。createText()

@Override
protected String createText(){

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

}
于 2013-04-22T15:47:36.787 に答える