2010-12-14 8 views
2

Weiß jemand, ob es möglich ist, eine Spalte zu CellTable hinzuzufügen, abhängig vom Wert der angezeigten Zeile?GWT CellTable - Spalte abhängig von der Zeile hinzufügen

Normalerweise wird addColumn verwendet, aber der Zugriff auf Zeileneigenschaften ist nur in der getValue-Methode aktiviert. Ich muss diesen Zugriff früher erhalten, um entweder einen Wert zur Spalte hinzuzufügen oder ihn leer zu lassen.

Antwort

2

Die Antwort ist, benutzerdefinierte Zellenklasse zu schreiben, die die entsprechende Zellklasse (mit GWT bereitgestellt) erweitert. Dann kann der Inhalt der Spalte in render-Methode leer oder nicht abhängig vom Wert des angezeigten/gerenderten Objekts sein. Z.B.

private class VersionCell<T> extends ActionCell<MovieDTO> { 

    public VersionCell(String text, Delegate<MovieDTO> delegate) { 
     super(text, delegate); 
    } 

    @Override 
    public void render(MovieDTO m, Object key, SafeHtmlBuilder sb) { 
     if (m != null && m.getId() != -1) { 
      super.render(m, key, sb); 
     } else if (m != null && m.getId() == -1) { 
      sb.append(new SafeHtmlBuilder().appendHtmlConstant("").toSafeHtml()); 
     } 
    } 
}