2012-01-26 18 views

risposta

15

è necessario fornire un oggetto RowStyles che restituisce i nomi delle classi CSS per ogni riga. Quindi, per impostare un colore particolare per una riga, devi definire una classe css con quel colore e quindi causare l'oggetto RowStyles per restituire quella classe per le righe pertinenti.

Penso che tu lo abbia impostato con cellTable.setRowStyles o qualcosa di simile.

cellTable.setRowStyles(new RowStyles<T>() { 
    @Override 
    public String getStyleNames(T rowObject, int rowIndex) { 
     if (rowIndex == 3) { 
      return "bluetext"; 
     } else { 
      return "normaltext"; 
     } 
    }); 
2

Se è necessario aggiornare il colore riga basata su un valore cambiato in una delle celle, è possibile aggiungere il seguente codice al fieldUpdater di questa cellula:

@Override 
public void update(int index, Object object, String value) { 
    if (someConditionIsMet) { 
     myTable.getRowElement(index).addClassName("redBackground"); 
    } 
} 

Nel file CSS aggiuntivo questo stile:

.redBackground { 
    background-color: red !important; 
} 
+0

il file CSS che intendi è your_module.css?! perché non ha funzionato per me. Grazie. – amrfaissal

+0

Qualunque file CSS usi per la tua applicazione. Se ne hai diversi, potrebbero entrare in conflitto l'uno con l'altro. È possibile utilizzare gli strumenti del browser per vedere quale stile viene effettivamente applicato alla riga della tabella e quali stili vengono ignorati. –

+1

Vedo che la classe css viene applicata all'elemento ma lo stile non viene visualizzato! – amrfaissal

1

Per rispondere l'ultimo commento che lo stile è nell'elemento fila ma non viene eseguito il rendering: Uso setRowStyles (nuove RowStyles() ... L'unico modo in cui ho avuto modo di visualizzare gli stili era usare la forza bruta. Ho dovuto rimuovere la riga dal mio archivio List, aggiungerla allo stesso indice e quindi aggiornare il RowModel. Per quello che vale.