我有一个简单的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
任何提示? 非常感谢
答案 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);
}