GWT Async DataProvider总是跳到celtable'的第一页

问题描述 投票:0回答:1

我有一个简单的celltable:

a)用于从服务器检索整个值列表的计时器(通过rpc)。当数据来自服务器时:

public void onSuccess(final Object result) {

             myList ((List<myObject>) result);                            
             setRowData(myList);
        }

b)用于刷新当前显示页面的AsyncDataProvider,其中:

protected void onRangeChanged(HasData<myObject> display) {

            final Range range = display.getVisibleRange();
            int start = range.getStart();
            int end = start + range.getLength();

            List<myObject> dataInRange = myList.subList(start, end);
            // Push the data back into the list.                   
           setRowData(start, dataInRange);

}

这工作正常,当新数据从服务器到达时刷新表..但是......它跳转到我显示的表的第一页,无论他当前页面(页面大小= 20)。它就像是忽略了onRangeChanged方法的start和dataInRange值

句子:setRowData(myList);

正确触发DataProvider的onRangeChanged事件,但有些'start'值如何获得0

有提示吗?非常感谢

gwt gwt-celltable
1个回答
0
投票

问题是当你调用setRowData(myList);时你也改变了行范围。

documentation

设置要在一个页面上显示的完整值列表。

等效于使用值列表的长度调用setRowCount(int),setVisibleRange(Range)从0到值列表的大小,以及setRowData(int,List),其起始值为0,指定的值列表。

从字面上看,下面是实施:

public final void setRowData(List<? extends T> values) {
  setRowCount(values.size());
  setVisibleRange(0, values.size());
  setRowData(0, values);
}
© www.soinside.com 2019 - 2024. All rights reserved.