Chrome问题:启用/禁用列上的排序在GWT中的chrome失败

时间:2013-07-31 18:02:08

标签: gwt

我正在使用GWT的CellTable。当用户单击某个列标题进行排序时,我想禁用排序,直到检索到数据。为此,我使用以下代码:

private void setHeadersSortable(boolean enable) {
  if (_table.getColumnCount() > 0) {
     if (enable) {
        // enable only columns specified in _sortPropertyByColumn
        Iterator<Column<T, ?>> sortableColsIter = _sortPropertyByColumn.keySet().iterator();
        while (sortableColsIter.hasNext()) {
           sortableColsIter.next().setSortable(enable);
        }
     } else {
        // disable all columns
        for (int i = 0; i < _table.getColumnCount(); i++) {
           _table.getColumn(i).setSortable(enable);
        }
     }
     _table.redrawHeaders();
  }

}

这一切在Firefox和IE中运行良好,但在Chrome中没有。

似乎在Chrome中,它在_table.redrawHeaders()中失败了。调用在gwt类AbstractHasData中调用失败,抛出IndexOutOfBoundsException

protected void checkRowBounds(int row) {
    if (!isRowWithinBounds(row)) {
        throw new IndexOutOfBoundsException("Row index: " + row + ", Row size: " +      getRowCount());
     }
  }

protected boolean isRowWithinBounds(int row) {
     return row >= 0 && row < presenter.getVisibleItemCount();
}

1 个答案:

答案 0 :(得分:0)

通过推迟redrawHeaders()调用

解决了该问题
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
        @Override
        public void execute() {
           _table.redrawHeaders();
        }
     });
  }