#gwt
#gwt
Вопрос:
Я использую SimplePager
и хочу отображать 12 элементов (пользователей) на странице. Весь мой набор данных состоит из 20 элементов.
Проблема в том, что на первой странице (правильно) показаны элементы 1-12, но на второй странице показаны элементы 9-20. Я хочу, чтобы на второй странице отображались элементы 13-20.
Что происходит не так?
Вот мой код:
CellTable<User> cellTable = new CellTable<User>();
SimplePager pager = new SimplePager(TextLocation.CENTER);
pager.setDisplay(cellTable);
pager.setPageSize(12);
ListDataProvider<User> dataProvider = new ListDataProvider<User>();<br>
dataProvider.setList(USERSList);
dataProvider.addDataDisplay(cellTable);
Заранее благодарю вас!
Ответ №1:
Настройка
setRangeLimited(false)
всегда будет отображаться следующая страница.
Вместо этого я установил значение rangeLimited равным true и переопределил для этого следующий метод :
@Override
public void setPageStart(int index) {
if (getDisplay() != null) {
Range range = getDisplay().getVisibleRange();
int pageSize = range.getLength();
// Removed the min to show fixed ranges
//if (isRangeLimited amp;amp; display.isRowCountExact()) {
// index = Math.min(index, display.getRowCount() - pageSize);
//}
index = Math.max(0, index);
if (index != range.getStart()) {
getDisplay().setVisibleRange(index, pageSize);
}
}
}
Ответ №2:
Попробуйте установить:
setRangeLimited(false)
Более подробная информация:
Комментарии:
1. приятно, но трюк для отключения бесконечной ошибки «hasnextpage» не работает, что вы думаете??
2. @Fabio, приведенное ниже решение работает и устраняет проблему с hasnextpage
Ответ №3:
решение @fbfcn и @MasterUZ работает, с несколькими небольшими изменениями, чтобы привести его в соответствие с SimplePager от GWT 2.4:
public class MySimplePager extends SimplePager {
public MySimplePager() {
this.setRangeLimited(true);
}
public MySimplePager(TextLocation location, Resources resources, boolean showFastForwardButton, int fastForwardRows, boolean showLastPageButton) {
super(location, resources, showFastForwardButton, fastForwardRows, showLastPageButton);
this.setRangeLimited(true);
}
public void setPageStart(int index) {
if (this.getDisplay() != null) {
Range range = getDisplay().getVisibleRange();
int pageSize = range.getLength();
if (!isRangeLimited() amp;amp; getDisplay().isRowCountExact()) {
index = Math.min(index, getDisplay().getRowCount() - pageSize);
}
index = Math.max(0, index);
if (index != range.getStart()) {
getDisplay().setVisibleRange(index, pageSize);
}
}
}
}
Комментарии:
1. ЭТОТ! Идеально работает с GWT 2.5.1
Ответ №4:
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.view.client.Range;
public class MySimplePager extends SimplePager {
public MySimplePager() {
this.setRangeLimited(true);
}
public MySimplePager(TextLocation location, Resources resources, boolean showFastForwardButton, int fastForwardRows, boolean showLastPageButton) {
super(location, resources, showFastForwardButton, fastForwardRows, showLastPageButton);
this.setRangeLimited(true);
}
@Override
public void setPageStart(int index) {
if (getDisplay() != null) {
Range range = getDisplay().getVisibleRange();
int pageSize = range.getLength();
if (!isRangeLimited() amp;amp; getDisplay().isRowCountExact()) {
index = Math.min(index, getDisplay().getRowCount() - pageSize);
}
index = Math.max(0, index);
if (index != range.getStart()) {
getDisplay().setVisibleRange(index, pageSize);
}
}
}
}