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 を返すことです:(
この問題を解決する方法はありますか? この質問に対する指針/解決策を教えてください。
前もって感謝します。