Gwt 小区表分页

Gwt 小区表分页,gwt,Gwt,我有一张单人床和一个简易洗衣机。我正在对服务器进行异步调用,以将数据作为列表返回 AsyncDataProvider<Entry> provider = new AsyncDataProvider<Entry>() { @Override protected void onRangeChanged(HasData<Entry> display) { final int start

我有一张单人床和一个简易洗衣机。我正在对服务器进行异步调用,以将数据作为列表返回

AsyncDataProvider<Entry> provider = new AsyncDataProvider<Entry>() {
            @Override
            protected void onRangeChanged(HasData<Entry> display) {
                final int start = display.getVisibleRange().getStart();
                int length = display.getVisibleRange().getLength();

                AsyncCallback<List<Entry>> callback = new AsyncCallback<List<Entry>>() {
                    @Override
                    public void onFailure(Throwable caught) {
                        Window.alert(caught.getMessage());
                    }

                    @Override
                    public void onSuccess(List<Entry> result) {                         
                        updateRowData(start, result);
                    }
                };

                // The remote service that should be implemented
                rpcService.fetchEntries(start, length, callback);
            }
        };
AsyncDataProvider=新的AsyncDataProvider(){
@凌驾
受保护的无效onRangeChanged(HasData显示){
final int start=display.getVisibleRange().getStart();
int length=display.getVisibleRange().getLength();
AsyncCallback callback=新的AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
Window.alert(catch.getMessage());
}
@凌驾
成功时公共无效(列表结果){
updateRowData(开始、结果);
}
};
//应该实现的远程服务
获取条目(开始、长度、回调);
}
};
在服务器端

public List<Entry> fetchEntries(int start, int length) {
        if (start > ENTRIES.size())
            return new ArrayList<Entry>();

        int end = start + length > ENTRIES.size() ? ENTRIES.size() : start
                + length;
        ArrayList<Entry> sublist = new ArrayList<Entry>(
                (List<Entry>) ENTRIES.subList(start, end));
        return sublist;
    }
public List fetchEntries(int start,int length){
如果(开始>条目.size())
返回新的ArrayList();
int end=start+length>ENTRIES.size()?ENTRIES.size():开始
+长度;
ArrayList子列表=新建ArrayList(
(列表)条目。子列表(开始、结束));
返回子列表;
}

问题是我不知道aync调用返回的数据集的大小。所以我无法设置updateRowCount。因此,现在“下一步”按钮始终处于活动状态,即使数据集只有24个字段。有什么想法吗?

修改RPC服务以同时返回一个标志如何:

class FetchEntriesResult{
  private int totalNumberOfEntries;
  private List<Entry> entries;
  //getters,setters, constructor etc...
}
类FetchEntriesResult{
私有int totalNumberOfEntries;
私人名单条目;
//获取程序、设置程序、构造函数等。。。
}
您的服务方法将类似于:

public FetchEntriesResult fetchEntries(int start, int length) {

       if (start > ENTRIES.size())
            return new ArrayList<Entry>();

        int end = start + length > ENTRIES.size() ? ENTRIES.size() : start
                + length;
        ArrayList<Entry> sublist = new ArrayList<Entry>(
                (List<Entry>) ENTRIES.subList(start, end));
        return new FetchEntriesResult(sublist,ENTRIES.size());
}
public-FetchEntriesResult-fetchEntries(int-start,int-length){
如果(开始>条目.size())
返回新的ArrayList();
int end=start+length>ENTRIES.size()?ENTRIES.size():开始
+长度;
ArrayList子列表=新建ArrayList(
(列表)条目。子列表(开始、结束));
返回新的FetchEntriesResult(子列表,ENTRIES.size());
}

现在,您可以在客户端上使用
FetchEntriesResult.getTotalNumberOfEntries()

如何修改RPC服务以同时返回标志:

class FetchEntriesResult{
  private int totalNumberOfEntries;
  private List<Entry> entries;
  //getters,setters, constructor etc...
}
类FetchEntriesResult{
私有int totalNumberOfEntries;
私人名单条目;
//获取程序、设置程序、构造函数等。。。
}
您的服务方法将类似于:

public FetchEntriesResult fetchEntries(int start, int length) {

       if (start > ENTRIES.size())
            return new ArrayList<Entry>();

        int end = start + length > ENTRIES.size() ? ENTRIES.size() : start
                + length;
        ArrayList<Entry> sublist = new ArrayList<Entry>(
                (List<Entry>) ENTRIES.subList(start, end));
        return new FetchEntriesResult(sublist,ENTRIES.size());
}
public-FetchEntriesResult-fetchEntries(int-start,int-length){
如果(开始>条目.size())
返回新的ArrayList();
int end=start+length>ENTRIES.size()?ENTRIES.size():开始
+长度;
ArrayList子列表=新建ArrayList(
(列表)条目。子列表(开始、结束));
返回新的FetchEntriesResult(子列表,ENTRIES.size());
}
现在,您可以在客户端上使用
FetchEntriesResult.getTotalNumberOfEntries()