GWT/Gwtbootstrap3 - 如何限制分页页数

GWT/Gwtbootstrap3 - How to limit the numbers on a pagination pages

我有一个带有 CellTable 和 Pagination 的 GWT/Gwtbootstrap3 项目。一切都很顺利,但是当我得到很多页面时,我的分页小部件在页面上变得越来越大。

如何限制分页小部件上的数字,使其只显示 5 个数字???

喜欢

<< 1 2 3 4 5 >>

然后

<< 6 7 8 9 10 >>

最多

<< 610 611 612 613 614 >>

现在它显示从 1 到 614 的所有数字:-(

问题解决了。我在网上找到了一个解决方案,稍微修改了一下。

我自己制作了 class 并从 Pagination

进行了扩展
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());
    }

}