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());
}
}
我有一个带有 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());
}
}