CellTable高度在分页时缩小

时间:2014-01-04 00:27:24

标签: java gwt gwt-celltable

重要信息::此问题与Stack Overflow上的另一个similarly titled问题完全不同。

我将一个CellTable与GWT 2.5.1中支持RPC的AsyncDataProvider结合使用。 RPC的响应速度非常快,响应时间不到20毫秒。

我遇到的问题是,当我翻阅表格时,我似乎在浏览器中的表格上出现了闪烁。经过一些调试后,我可以看到该表没有显示数据行,然后在几毫秒内恢复下一页的行。

每次移动页面时,这都表现为以下快速的UI事件序列(其中10是任意页面大小):

  1. 显示当前页(10条记录)
  2. 显示空白页面(0条记录)
  3. 显示下一页(10条记录)
  4. 为了帮助隔离问题是否来自关联的寻呼机小部件的事件处理程序,我添加了一个按钮(纯粹出于测试目的)来手动更改表中的页面。通过单击寻呼机小部件,以下按钮与分页具有完全相同的症状。

        _movePageForwardButton.addClickHandler(new ClickHandler() {
           @Override
           public void onClick(ClickEvent event) {
               _table.setPageStart(_table.getPageStart()+10);
           }
        });
    

    我已经进行了Google搜索,并找到了this post(我从中借用了这个问题的标题),其中描述了与我目前遇到的完全相同的症状。没有提供解决方案,我必须假设其他人遇到了同样的问题,并制定了自己的解决方法。最慷慨地接受解决方法。

1 个答案:

答案 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)
  }
}