java - 使用 DataGrid 和 AsyncDataProvider 实现 SimplePager

标签 java gwt

当为数据网格提供从服务器获取的值时,如何使用 AsyncDataProvider 实现 SimplePager。

最佳答案

您必须创建一个扩展 AsyncDataProvider 的类。在该类中,您可以覆盖 onRangeChanged 方法。

例如我的类(class)是这样的:

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 和 Pager,如下所示:

// 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,指示您输入的行计数是准确计数还是只是估计。

关于java - 使用 DataGrid 和 AsyncDataProvider 实现 SimplePager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17859782/

相关文章:

java - ReSTLet,还活跃吗?

java - GWT 图表消失问题

CSS如何不使用样式

java - -source 1.3 不支持泛型

java - 在 Firebase 中查询组的正确做法

java - 为基于云的构建和部署管理 paypal-api 凭据的好方法是什么?

java - 如何让Jetty动态加载 "static"页面

Java 框架...不关注 JTextField

java - 如何让 while 循环中的 if else 嵌套循环正常工作,

css - 如何根据换行符对齐标签?