0

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() で失敗するようです。IndexOutOfBoundsException をスローする gwt クラス AbstractHasData で呼び出しが失敗する

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();
}
4

1 に答える 1