2

GWT 2.3 Celltable & SimplePager を使用しています

SimplePager クラスを拡張して CustomPager を作成します。

ListBox を使用して、10、20、50、100 などの celltable のさまざまなページ サイズを表示しました。

ページサイズが 10 のときに celltable に 11 レコードを表示しています。 (1 空のレコード (行) + 10 レコード (行))

pageSize = 20 の場合は 21 行 (レコード)、pageSize = 50 の場合は 51 行 (レコード)、pageSize = 100 の場合は 101 行 (レコード)。

ページ サイズ 50 または 100 を選択すると、ページャーとディスプレイが正しい値を返すため、ページネーションは正しく機能しますが、10 と 20 の場合は機能しません。

デバッグ後、次のことがわかりました。

ページ サイズが 10 または 20 の場合、ページャーの lastPage ボタンの onclick がページャーの不適切な pageIndex と startIndex の不適切な値を取得します。

間違った startindex = display.getVisibleRange().getStart()

//Following method called when button click event fires

 protected void onRangeChanged(HasData<RecordVO> display) {

            info("Called onRangeChanged method of AsyncDataProvider");

            eventType = "PAGINATION";

            setPrevPageIndexForChangedRecord();
            cellTable.setRowCount(searchRecordCount, false);

            startRowIndexOfPage = display.getVisibleRange().getStart(); // startRowIndex;
             // ------ My code is here

}

ページャーでクリックしたときの誤った値は次のとおりです。最後のボタンは、ページ サイズ = 10、つまり 1 ダミー レコード + 10 実際のレコードと見なします。

    startRowIndexOfPage = display.getVisibleRange().getStart(); // startRowIndex;
    info("Start row index of page = "+startRowIndexOfPage);
    info("GWT Current page index = "+pager.getPage());
    info("GWT Total page count = "+pager.getPageCount());
    info("Gwt Total page size  = "+pager.getPageSize());
    info("Gwt page start index = "+pager.getPageStart());

page size=10 の場合のページャの最後のボタンの onclick の不正な出力:

(-:-) 2013-03-05 09:53:22,136 [INFO ] Start row index of page = 990
(-:-) 2013-03-05 09:53:22,150 [INFO ] GWT Current page index = 90
(-:-) 2013-03-05 09:53:22,178 [INFO ] GWT Total page count = 91
(-:-) 2013-03-05 09:53:22,191 [INFO ] Gwt Total page size = 11
(-:-) 2013-03-05 09:53:22,204 [INFO ] Gwt page start index = 990

主な問題は、最後のページ インデックスの代わりに pager.getPage() が 90 を返すことです:(

この問題を解決する方法はありますか? この質問に対する指針/解決策を教えてください。

前もって感謝します。

4

2 に答える 2

1

次の算術演算を使用して見つけてみてくださいstartRowIndexOfPage-

 startRowIndexOfPage = display.getVisibleRange().getStart() - pager.getPage();

そして確認してpage limit is 10 not 11ください。また、追加する余分な空の行をページャーに認識させないようにします。

于 2013-03-05T14:51:30.340 に答える
0

このように試しましたか??

@Override
protected void onRangeChanged(HasData<YourObject> display) 
{
        int start = display.getVisibleRange().getStart();
        int end  = start + display.getVisibleRange().getLength();                
        if (ListOfYourObjects != null) 
        {
              end = end >= ListOfYourObjects.size() ? ListOfYourObjects.size(): end;
              List<YourObject> sub = ListOfYourObjects.subList(start, end);
              updateRowData(start, sub);
        }   
}
于 2013-03-02T12:24:17.737 に答える