重要信息::此问题与Stack Overflow上的另一个similarly titled问题完全不同。
我将一个CellTable与GWT 2.5.1中支持RPC的AsyncDataProvider结合使用。 RPC的响应速度非常快,响应时间不到20毫秒。
我遇到的问题是,当我翻阅表格时,我似乎在浏览器中的表格上出现了闪烁。经过一些调试后,我可以看到该表没有显示数据行,然后在几毫秒内恢复下一页的行。
每次移动页面时,这都表现为以下快速的UI事件序列(其中10是任意页面大小):
为了帮助隔离问题是否来自关联的寻呼机小部件的事件处理程序,我添加了一个按钮(纯粹出于测试目的)来手动更改表中的页面。通过单击寻呼机小部件,以下按钮与分页具有完全相同的症状。
_movePageForwardButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
_table.setPageStart(_table.getPageStart()+10);
}
});
我已经进行了Google搜索,并找到了this post(我从中借用了这个问题的标题),其中描述了与我目前遇到的完全相同的症状。没有提供解决方案,我必须假设其他人遇到了同样的问题,并制定了自己的解决方法。最慷慨地接受解决方法。
答案 0 :(得分:3)
我遇到了同样的问题。解决方案是在异步处理开始之前立即设置rowData(到一些临时值),所以在此期间你的CellList可以显示:
dataProvider = new AsyncDataProvider<StringEntity>() {
@Override
protected void onRangeChanged(final HasData<StringEntity> display) {
final Range visibleRange = display.getVisibleRange();
final int start = visibleRange.getStart();
final int length = visibleRange.getLength();
final List<StringEntity> subList = new ArrayList<StringEntity>();
for (long position = start; position < start + length; position ++)
subList.add(new StringEntity(position, "Please wait..."));
display.setRowData(start, subList);
// now perform your request...
// onSuccess, set the rowData again (to the updated values)
}
}