GWT/Gwtbootstrap3 - Как ограничить количество страниц на страницах

У меня есть проект GWT/Gwtbootstrap3 с CellTable и нумерацией страниц. Все работает как шарм, но когда я получаю много страниц, мой виджет нумерации страниц становится все больше и больше на странице.

Как мне ограничить числа в виджете нумерации страниц, чтобы он показывал только 5 цифр???

подобно

<< 1 2 3 4 5 >>

а потом

<< 6 7 8 9 10 >>

все до

<< 610 611 612 613 614 >>

Как и сейчас он показывает все цифры от 1 до 614:-(

1 ответ

Решение

Решил проблему. Я нашел решение в сети и немного его изменил.

Я сделал свой собственный класс и расширился от нумерации страниц

package dk.common.gwt.ui.generictable;

import org.gwtbootstrap3.client.ui.AnchorListItem;
import org.gwtbootstrap3.client.ui.Pagination;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.cellview.client.SimplePager;

public class MyPagination extends Pagination
{
    public void rebuild(final SimplePager pager, int setDisplayLimitNum)
    {
        clear();

        final int displayLimitNum = setDisplayLimitNum;
        final int lineNum = pager.getPage() / displayLimitNum;
        int nowNum = pager.getPage() / displayLimitNum;
        int startPagerNum = nowNum * displayLimitNum;
        int endPagerNum = nowNum * displayLimitNum + displayLimitNum;

        if (nowNum * displayLimitNum + displayLimitNum > pager.getPageCount())
        {
            endPagerNum = pager.getPageCount();
        }

        if (pager.getPageCount() < displayLimitNum)
        {
            endPagerNum = pager.getPageCount();
        }

        if (pager.getPageCount() == 0)
        {
            return;
        }

        for (; startPagerNum < endPagerNum; startPagerNum++)
        {
            final int display = startPagerNum + 1;
            final AnchorListItem page = new AnchorListItem(String.valueOf(display));
            page.addClickHandler(new ClickHandler()
            {
                @Override
                public void onClick(final ClickEvent event)
                {
                    pager.setPage(display - 1);
                }
            });

            if (startPagerNum == pager.getPage())
            {
                page.setActive(true);
            }

            add(page);
        }

        final AnchorListItem prev = addPreviousLink();
        prev.addClickHandler(new ClickHandler()
        {
            @Override
            public void onClick(final ClickEvent event)
            {
                pager.setPageStart((lineNum - 1) * pager.getPageSize() * displayLimitNum);
            }
        });
        prev.setEnabled(pager.hasPreviousPage());

        final AnchorListItem next = addNextLink();
        next.addClickHandler(new ClickHandler()
        {
            @Override
            public void onClick(final ClickEvent event)
            {
                pager.setPageStart((lineNum + 1) * pager.getPageSize() * displayLimitNum);
            }
        });
        next.setEnabled(pager.hasNextPage());
    }

}
Другие вопросы по тегам