GWT,如果提供totalRecords、pageSize和可见页面链接,是否有任何GWT小部件可以管理分页?

GWT,如果提供totalRecords、pageSize和可见页面链接,是否有任何GWT小部件可以管理分页?,gwt,gwtp,Gwt,Gwtp,我们有SimplePager但是对于cell小部件,我想知道是否有任何小部件可以帮助完成这项工作: 如果我们有 totalRecords=100; pageSize=3; visiblePageLinks=5; 那么结果是这样的 Page: [1] [2] [3] [4] [5] [Next] out of 34 (note:34=100/3 +1) when user clicking [Next] it will automatically turn to Page: [previous

我们有
SimplePager
但是对于cell小部件,我想知道是否有任何小部件可以帮助完成这项工作:

如果我们有

totalRecords=100;
pageSize=3;
visiblePageLinks=5;
那么结果是这样的

Page: [1] [2] [3] [4] [5] [Next] out of 34 (note:34=100/3 +1) when user clicking [Next] it will automatically turn to Page: [previous] [6] [7] [8] [9] [10] [next] if they click the last [Next], it will turn to: Page: [previous] [31] [34] [33] [34] (note: no more [Next] If user clicking [previous] then it will calculate backwards. 看看这个:


您可以扩展它以添加更多功能,也可以使用相同的想法编写自己的功能。

您需要扩展AbstractPager而不是SimplePager

因为SimplePager只能在SimplePager.java中显示text.check createText()

表格。setVisibleRange(开始,页面大小)是基本要素。请按照下面的方法扩展AbstractPager

public void onModuleLoad() {
        VerticalPanel root=new VerticalPanel();
        RootPanel.get().add(root);
        List<String> values=new ArrayList<String>();
        for(int i=1;i<=10;i++){
            values.add("value"+i);
        }

        final CellTable<String> table=new CellTable<String>();
        table.addColumn(new TextColumn<String>() {
            @Override
            public String getValue(String object) {
                return object;
            }
        });


        ListDataProvider<String> dataProvider = new ListDataProvider<String>();
        dataProvider.addDataDisplay(table);

        table.setRowCount(values.size());
        dataProvider.setList(values);

        final int psize=2;
        table.setPageSize(psize);
        table.setRowData(values);

        table.setVisibleRange(0, psize);

        HorizontalPanel horizontalPanel=new HorizontalPanel();
        int index=1;
        for(int i=0;i<values.size();i+=2){
            final int start=i;
            Button bt=new Button("page"+index,new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    table.setVisibleRange(start, psize);
                }

            });
            horizontalPanel.add(bt);
            index++;
        }

        root.add(table);
        root.add(horizontalPanel);
}
模块加载()上的公共void{
VerticalPanel根=新的VerticalPanel();
RootPanel.get().add(root);
列表值=新的ArrayList();

对于(int i=1;i),您可能会感兴趣,但我仍然建议使用CellTable。
public void onModuleLoad() {
        VerticalPanel root=new VerticalPanel();
        RootPanel.get().add(root);
        List<String> values=new ArrayList<String>();
        for(int i=1;i<=10;i++){
            values.add("value"+i);
        }

        final CellTable<String> table=new CellTable<String>();
        table.addColumn(new TextColumn<String>() {
            @Override
            public String getValue(String object) {
                return object;
            }
        });


        ListDataProvider<String> dataProvider = new ListDataProvider<String>();
        dataProvider.addDataDisplay(table);

        table.setRowCount(values.size());
        dataProvider.setList(values);

        final int psize=2;
        table.setPageSize(psize);
        table.setRowData(values);

        table.setVisibleRange(0, psize);

        HorizontalPanel horizontalPanel=new HorizontalPanel();
        int index=1;
        for(int i=0;i<values.size();i+=2){
            final int start=i;
            Button bt=new Button("page"+index,new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    table.setVisibleRange(start, psize);
                }

            });
            horizontalPanel.add(bt);
            index++;
        }

        root.add(table);
        root.add(horizontalPanel);
}