2017-02-02 3 views
2

J'ai une grille avec le bouton dans la colonne générée. Voir capture d'écran:Comment cacher le bouton dans la colonne générée dans la grille?

enter image description here

En fonction de la valeur booléenne dans la colonne « A Stacktrace » Je voudrais afficher ou masquer le bouton « vue » dans la colonne « Stacktrace ».

Devrais-je prolonger com.vaadin.ui.renderers.ButtonRenderer de Vaadin ou il y a une option plus simple?

Répondre

0

J'ai fait la solution suivante, mais je voudrais encore savoir comment faire un bouton:

// create container 
IndexedContainer container = new IndexedContainer(...); 
container.addContainerProperty("stacktrace", String.class, null); 

// set data 
importSession.getRows().forEach(importSessionRow -> { 
    Item item = gpcontainer.getItem(importSessionRow.getId()); 
    item.getItemProperty("stacktrace").setValue(importSessionRow.isHasStacktrace() ? "/admin/instrument/import/row/" + importSessionRow.getId() + "/stacktrace.html" : null); 
}); 

// set renderer 
grid.getColumn("stacktrace").setRenderer(new HtmlRenderer(), 
      new Converter<String, String>() { 
       @Override 
       public String convertToModel(String value, 
              Class<? extends String> targetType, Locale locale) 
         throws Converter.ConversionException { 
        return "not implemented"; 
       } 

       @Override 
       public String convertToPresentation(String value, 
                Class<? extends String> targetType, Locale locale) 
         throws Converter.ConversionException { 
        return value != null ? "<a href='" + value + "' target='_blank'>view</a>" : null; 
       } 

       @Override 
       public Class<String> getModelType() { 
        return String.class; 
       } 

       @Override 
       public Class<String> getPresentationType() { 
        return String.class; 
       } 
      });