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

时间:2017-12-29 18:04:35

标签: gwt gwt-celltable

我有一个简单的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事件,但有些事情是如何启动&#39;值得0

任何提示? 非常感谢

1 个答案:

答案 0 :(得分: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);
}