首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SimplePager和DataGrid实现AsyncDataProvider

用SimplePager和DataGrid实现AsyncDataProvider
EN

Stack Overflow用户
提问于 2013-07-25 13:43:28
回答 1查看 2.3K关注 0票数 3

当数据网格中提供了来自服务器的值时,如何使用SimplePager实现AsyncDataProvider。

EN

回答 1

Stack Overflow用户

发布于 2013-11-18 12:09:11

您必须创建一个扩展AsyncDataProvider的类。在该类中,您可以重写onRangeChanged-method。

例如,我的课程如下所示:

代码语言:javascript
复制
public class AsyncListProviderVisit extends AsyncDataProvider<MyObject> {

    @Override
    protected void onRangeChanged(HasData<MyObject> display) {
        // Get the new range.
        final Range range = display.getVisibleRange();

        /*
         * Query the data asynchronously. If you are using a database, you can
         * make an RPC call here. We'll use a Timer to simulate a delay.
         */

        final int start = range.getStart();
        int length = range.getLength();

        Service.Util.getInstance().getPartOfImmoObjects(start, length, new AsyncCallback<List<MyObject>>() {

            @Override
            public void onFailure(Throwable caught) {
                ConfirmationPanel cp = new ConfirmationPanel();
                cp.confirm("Error!", "An Error occurred during data-loading.");
            }

            @Override
            public void onSuccess(List<MyObject> result) {
                if (result != null) {
                    updateRowData(start, result);
                }
            }
        });
    }
}

然后需要创建DataGrid、AsyncProvider和寻呼机,如下所示:

代码语言:javascript
复制
// Create a CellList.
DataGrid<LcVisits> grid = new DataGrid<LcVisits>();

// Create a data provider.
AsyncListProviderVisit dataProvider = new AsyncListProviderVisit();

// Add the cellList to the dataProvider.
dataProvider.addDataDisplay(grid);

// Create paging controls.
SimplePager pager = new SimplePager();
pager.setDisplay(grid);

// and add them to your panel, container, whatever
container.add(grid);
container.add(pager);

编辑

正如Andre在他的评论中指出的那样,您还需要为查询获取正确的行计数。我用一个“假对象”完成了这个操作,我将其添加到我的列表中,然后在客户端删除它。然后,您可以调用updateRowCount(rowCount, isExact),其中isExcact是一个boolean,指示您输入的行计数是确切的计数还是刚刚估计的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17859782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档