GWT SimplePager LastButton проблема - PullRequest
4 голосов
/ 22 марта 2012

Я столкнулся с проблемой с последней кнопкой SimplePager. У меня есть 3 страницы в таблице ячеек, Размер страницы = 11 (1 пустая запись + 10 записей (со значением)), Общая запись = 26.

Я использовал CustomerPager, расширяя SimplePager.

В 1-й попытке 1 + 10 записей отображаются в ячейке: кнопка «Следующая и последняя страница» включена (кнопка «Первая и предыдущая» отключена), что правильно. Но кнопка LastPage не работает ... :( Не знаю, в чем проблема ... (событие не срабатывает)

Странное поведение:

@ 1 Кнопка последней страницы работает только тогда, когда я захожу на последнюю страницу (3 страницы в моем случае).

@ 2 Предположим, я на 1-й странице n Я перешел на 2-ю страницу (всего 3 страницы в таблице). тогда все кнопки включены, что правильно. В этом случае последняя кнопка работает, но ведет себя как следующая кнопка

Мое приложение GWT интегрировано в один из наших продуктов, поэтому его невозможно отладить на стороне клиента.

Может быть значение индекса неверно в методе setPage (int index) из AbstractPager

Поток кода для последней кнопки следующий:

//From SimplePager

lastPage.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
          lastPage();
        }
      });


       @Override
  public void lastPage() {
    super.lastPage();
  }

 // From AbstractPager
  /**
   * Go to the last page.
   */
  protected void lastPage() {
    setPage(getPageCount() - 1);
  }
 protected void setPage(int index) {
    if (display != null && (!isRangeLimited || !display.isRowCountExact() || hasPage(index))) {
      // We don't use the local version of setPageStart because it would
      // constrain the index, but the user probably wants to use absolute page
      // indexes.
      int pageSize = getPageSize();
      display.setVisibleRange(pageSize * index, pageSize);
    }
  }

или могут быть некоторые условия ложными из приведенного выше кода (из setPage ())

фактическая запись = 26 и 3 пустая запись (1-я пустая запись / страница)

Может b проблема с dataSize: |

Как я могу проверить количество страниц в зависимости от размера данных?

Как я могу решить эту проблему?

Ответы [ 4 ]

3 голосов
/ 27 марта 2012

edit: Я обнаружил, что конструктор пейджера по умолчанию не дает вам "последнюю" кнопку, а вместо этого кнопку "вперед 1000 строк" (ужасно, правда?).

вызовите следующий конструктор следующим образом, и увидите, что ваша проблема решена:

SimplePager.Resources resources = GWT.create(SimplePager.Resources.class); SimplePager simplePager = new SimplePager(TextLocation.CENTER, resources , false, 1000, true);

первый «ложный» флаг отключает «кнопку ускоренной перемотки», а последний «истинный» флаг включает «последнюю» кнопку.

также последняя кнопка будет работать, только если пейджер знает общее количество записей, которые у вас есть.

Вы можете вызвать функцию setRowCount таблицы, чтобы обновить итоговую сумму следующим образом:

int totalRecordsSize = 26; //the total amount of records you have boolean isTotalExact = true; //is it an estimate or an exact match table.setRowCount(totalRecordsSize , isTotalExact); //sets the table's total and updates the pager (assuming you called pager.setDisplay(table) before)

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

0 голосов
/ 10 мая 2012

Добавлен только cellTable.setRowCount(int size, boolean isExact) в методе изменения OnRange AsyncDataProvider. Моя проблема решена:)

protected void onRangeChanged(HasData<RecordVO> display) {
//----- Some code --------
cellTable.setRowCount(searchRecordCount, false);
//----- Some code --------
}
0 голосов
/ 29 марта 2012

Я думаю, что проблема связана с условием в setPage(). Попробуйте поставить SOP до условия if или отладить код

0 голосов
/ 26 марта 2012

Не видя больше вашего кода, это сложный вопрос, так как может быть несколько мест, где что-то идет не так.

Я бы убедился, что вы вызываете setDisplay(...) на вашем SimplePager, чтобы он имелнеобходимые данные рассчитывают его диапазоны.

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

...