2013-07-31 24 views
0

我正在使用GWT中的CellTable。當用戶點擊某個列標題進行排序時,我想禁用排序,直到檢索到數據。對於這一點,我使用下面的代碼:Chrome瀏覽器問題:啓用/禁用排序列上GWT中的鉻失敗

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中,它在_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(); 
} 

回答

0

問題已解決通過推遲redrawHeaders失敗()調用

Scheduler.get().scheduleDeferred(new ScheduledCommand() { 
     @Override 
     public void execute() { 
      _table.redrawHeaders(); 
     } 
    }); 
    }