gpt4 book ai didi

java - 使用 DataGrid 和 AsyncDataProvider 实现 SimplePager

转载 作者:搜寻专家 更新时间:2023-11-01 01:53:36 24 4
gpt4 key购买 nike

当为数据网格提供从服务器获取的值时,如何使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com