GWT - сотовый стол с простым пейджером - PullRequest
5 голосов
/ 06 декабря 2011

Пагинация таблицы ячеек ведет себя странно. посмотрите пример из GWT http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable

Размер страницы здесь определяется как 15. Это проблема-

  1. нажмите на кнопку последней страницы. Результаты для 241 до 250 показаны.
  2. Теперь нажмите на предыдущую кнопку - отображаются результаты с 226-240.
  3. Теперь нажмите на следующую кнопку (вот где проблема). Он показывает результаты с 236 по 250. Принимая во внимание, что он должен был показывать 241-250.

У меня такая же проблема в моем проекте. Есть ли какое-то решение для этого ??

Ответы [ 5 ]

12 голосов
/ 06 декабря 2011

Это известная, сообщенная ошибка .Как упоминалось в этом отчете об ошибках, существует обходной путь:

В качестве обходного пути можно создать подкласс SimplePager для переопределения этого поведения, определенного в методе setPageStart:

@Override
public void setPageStart(int index) {
    if (this.getDisplay() != null) {
        Range range = this.getDisplay().getVisibleRange();
        int pageSize = range.getLength();
//      if (isRangeLimited && display.isRowCountExact()) {
//          index = Math.min(index, display.getRowCount() - pageSize);
//      }
        index = Math.max(0, index);
        if (index != range.getStart()) {
            this.getDisplay().setVisibleRange(index, pageSize);
        }
    }
}
8 голосов
/ 18 апреля 2012

Когда вы выполняете инициализацию пейджера, вы должны установить:

pager.setRangeLimited(false);

Этот метод устанавливает, должен ли диапазон страниц быть ограничен фактическим размером данных.

Если true, все операции будут настроены так, чтобы на странице всегда были видимые данные.

1 голос
/ 26 июня 2013

Переопределите hasNextPage(), как показано ниже.

pager = new SimplePager(TextLocation.CENTER,(SimplePager.Resources) GWT.create(Resources.class), false,10, true){
                    @Override
                    public boolean hasNextPage() {
                        if(this.getPage()<(this.getPageCount()-1)) {
                            return true;
                        }
                        return false;
                    }
                };
1 голос
/ 06 декабря 2011

Проблема заключалась в том, что класс CellTable был разработан для размещения данных в соответствии с заданным размером страницы.и отсюда проблема.Я ожидал, что это может быть исправлено в выпуске GWT 2.4.Вы можете зарегистрировать эту проблему на сайте GWT, и будем надеяться, что это будет исправлено в следующем выпуске.

@

0 голосов
/ 10 июня 2014

Создайте подкласс simplepager следующим образом с методом nextPage.

public class CustomSimplePager extends SimplePager {

     @Override
     public void nextPage() {
           // TODO Auto-generated method stub
           HasRows display = getDisplay();
           if (display != null) {
           Range range = display.getVisibleRange();
                if (hasNextPage())
                      setPageStart(range.getStart() + range.getLength());
           }
     }
 }

И установите pager.setRangeLimited(false);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...