2013-06-04 2 views
4

Использование GWT 2.5.1 SimplePager.java имеет этот метод:Почему следующие/последние кнопки GWT SimplePager отключены, только если диапазон ограничен или если количество строк неточно?

@Override 
protected void onRangeOrRowCountChanged() { 

    HasRows display = getDisplay(); 
    label.setText(createText()); 

    // Update the prev and first buttons. 
    setPrevPageButtonsDisabled(!hasPreviousPage()); 

    // Update the next and last buttons. 
    if (isRangeLimited() || !display.isRowCountExact()) { 
     setNextPageButtonsDisabled(!hasNextPage()); 
     setFastForwardDisabled(!hasNextPages(getFastForwardPages())); 
    } 
} 

Почему следующие/последние кнопки включено/отключено, только если диапазон ограничен или если количество строк не является точным? У меня установлен пейджер ограниченным значением false, и мой провайдер данных асинхронных сообщений указывает, что подсчет строк является точным, когда я обновляю счет строки. С помощью этой настройки новые/последние кнопки поискового вызова НИКОГДА не будут обновлены!

Я просто использую это неправильно или это ошибка?

Я работал вокруг проблемы путем создания подклассов SimplePager, чтобы меня в этот блок в нижней части onRangeOrRowCountChanged():

@Override 
    protected void onRangeOrRowCountChanged() { 
     boolean rangeLimited = isRangeLimited(); 
     super.setRangeLimited(true); 
     super.onRangeOrRowCountChanged(); 
     super.setRangeLimited(rangeLimited); 
    } 
+0

Замечание о том, почему это было приостановлено, будет оценено по достоинству. Я думал, что это правильный и четко заданный вопрос. – Jay

ответ

4

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

Если количество строк не является точным, следующая кнопка должна быть включена, потому что hasNextPage вернет true (ускоренная перемотка будет отключена, если она выходит за пределы известного, хотя и неточного числа строк). Это относится к тому, ограничен ли диапазон или нет, что может быть или не быть ошибкой.

+0

Мое намерение заключается в том, что диапазон ограничен (я не хочу, чтобы пейджер показывал пустые страницы), а количество строк точное (я действительно знаю точное число). Итак, вы думаете, что это нормальное использование? Является ли ваш ответ «это может быть ошибкой?» – Jay

+0

Если вы намерены ограничить диапазон, то почему вы настраиваете свой пейджер с помощью 'false'? –

+0

Я не единственный человек, у которого вещи SimplePager странные. См. Https://groups.google.com/forum/?fromgroups#!searchin/google-web-toolkit/last$20page$20too$20big/google-web-toolkit/RedwgreWKB0/_3Q66CkXENUJ ... «Я заметил, что если вы вызываете setRangeLimited (false), вы получаете ожидаемое поведение, но кнопки прямого доступа не выделяются ». – Jay

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