2012-05-14 3 views
1

[JAVA]SimplePager неправильного отображения элементов подсчитывать

Я использую CellTable и SimplePager, получая данные в моем DataProvider над RPC. Прекрасно работает.

Пейджер отображает, например, «14-28 из 120», который является правильным. Когда запрос возвращает нулевые элементы для отображения, пейджер отображает «1-1 из 0», даже если я использую my_cellTable.setRowCount(0);

Как его отобразить «0 из 0» ??

ответ

3

Да, есть эта проблема. Чтобы исправить проблему, вам нужно создать собственный пользовательский пейджер. Расширьте SimplePager и переопределите метод createText(). Например:

public class MySimplePager extends SimplePager { 
    @Override 
    protected String createText() { 
     NumberFormat formatter = NumberFormat.getFormat("#,###"); 
     HasRows display = getDisplay(); 
     Range range = display.getVisibleRange(); 
     int pageStart = range.getStart() + 1; 
     int pageSize = range.getLength(); 
     int dataSize = display.getRowCount(); 
     int endIndex = Math.min(dataSize, pageStart + pageSize - 1); 
     endIndex = Math.max(pageStart, endIndex); 
     boolean exact = display.isRowCountExact(); 
     if (dataSize == 0) { 
      return "0 of 0"; 
     } else if (pageStart == endIndex) { 
       return formatter.format(pageStart) 
         + " of " 
         + formatter.format(dataSize); 
     } 
     return formatter.format(pageStart) 
      + "-" 
      + formatter.format(endIndex) 
      + (exact ? " of " : " of over ") 
      + formatter.format(dataSize); 
    } 
} 
+0

Спасибо. Я думал об ошибке на моей стороне. В следующий раз я проверю источники раньше. –

0

То, что я сделал, это просто установить видимость пейджера ложь, когда число элементов равно 0.

+0

Хорошая идея, но ваше решение не является исправлением, но обходным путем. И обходные методы не очень хороши, когда вам нужно стабильное программное обеспечение. –