2012-03-22 3 views
4

У меня проблема с lastButton of SimplePager. У меня есть 3 страницы в таблице сотовых, размер страницы = 11 (1 пустая запись + 10 записей (со значением)), итоговая запись = 26.GWT SimplePager LastButton issue

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

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

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

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

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

Приложение GWT, интегрированное в один из наших продуктов, настолько отлаживается t с клиентской стороны.

значение Может быть индекс неподходящий в методе setPage (интермедиат индекс) от 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 Пустая запись (первая Empty запись/страница)

Может б проблемы с DataSize: |

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

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

+0

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

ответ

0

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

protected void onRangeChanged(HasData<RecordVO> display) { 
//----- Some code -------- 
cellTable.setRowCount(searchRecordCount, false); 
//----- Some code -------- 
} 
0

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

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

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

3

Редактировать: Я выяснил, что конструктор по умолчанию пейджера не дает вам «последней» кнопки, а вместо этого вместо клавиши «Fast forward 1000 lines» (ужасно, правда?).

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

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

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

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

вы можете вызвать функцию 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 вместо (такое же использование).

+1

[« конструктор по умолчанию пейджера не дает вам «последнюю» кнопку, а вместо этого вместо кнопки «fast forward 1000 lines» (ужасно, правда?) »] Да, это действительно ужасно. Я только что взорвал этот день. – Jay

+1

Также обратите внимание на этот конструктор: SimplePager (местоположение SimplePager.TextLocation, boolean showFastForwardButton, boolean showLastPageButton) –

0

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