2010-12-14 47 views
2

Est-ce que quelqu'un sait s'il est possible d'ajouter une colonne à CellTable en fonction de la valeur de la ligne affichée?GWT CellTable - ajouter une colonne en fonction de la ligne

Normalement, addColumn est utilisé mais l'accès aux propriétés de ligne est activé uniquement dans la méthode getValue. J'ai besoin de gagner cet accès plus tôt pour décider soit d'ajouter une valeur à la colonne, soit de le laisser vide.

Répondre

2

La réponse est d'écrire une classe de cellule personnalisée qui étend la classe de cellule appropriée (fournie avec GWT). Ensuite, dans la méthode render, le contenu de la colonne peut être vide ou non selon la valeur de l'objet affiché/rendu. Par exemple.

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