2017-01-30 2 views
2

Я использую класс SimplePager класса GWT (2.5) в своем приложении для отображения предварительно загруженных данных (я знаю точное количество строк заранее).GWT SimplePager issues

Проблема с последней страницей. Учитывая, что у меня есть, например, 42 элемента с начальным видимым диапазоном 10. Первая страница - 1-10, вторая 11-20, третье 21-30, четвертое, 31-40. Проблема в том, что пятая страница не 41-42 (чего я хочу, потому что я хочу иметь возможность прокручивать назад и вперед и «земля» точно по тем же данным), но 33-42.

Я пробовал различную обработку с помощью переопределения методов SimplePager/AbstractPager, без успеха. Например, если я переопределяю setPageStart, сделайте то же самое, что и com.google.gwt.user.cellview.client.AbstractPager.setPageStart (int), но со следующим прокомментированным (я думаю, что это код виновника):

if (isRangeLimited && display.isRowCountExact()) { 
    index = Math.min(index, display.getRowCount() - pageSize); 
} 

Последняя страница прекрасна (41-42), но это стирает размер страницы навсегда, и когда я перехожу с последней страницы на предыдущую страницу, она становится 40-41 (ожидается: 31-40). Вероятно, это связано с тем, что размер страницы не является константой, предоставляемой экземпляру пейджера, но вычисляется с использованием последнего объекта Range («int pageSize = range.getLength();» в методе setPageStart).

Любая подсказка о том, как изменить поведение пейджинга на мои потребности, не нарушая ничего?

Спасибо!

ответ

0

В итоге я получил рабочее решение, которое достаточно простое. Я представил размер страницы (это максимальное количество элементов, которые могут отображаться, независимо от общего количества элементов, доступных для отображения) для моего объекта SimplePager. Затем я переопределил getPage(), hasNextPage(), hasNextPages (int), hasPreviousPages (int), nextPage(), previousPage(), setPageStart (int), чтобы использовать предоставленный размер страницы вместо getLength() в объекте Range.

Чтобы проверить это более легко (все еще сделано вручную ...), я использовал проект Витрины GWT (и запустил его в режиме dev).

Недостатком является то, что мне пришлось скопировать код переопределенных методов (из AbstractPager - SimplePager ничего не делает, кроме вызова методов суперкласса) в мой класс Pager.

Смежные вопросы