2011-04-27 10 views
7

Tengo una CellTable donde quiero poner código HTML en las celdas. El siguiente código no funciona, los espacios en blanco se eliminan de la salida.GWT - ¿Hacer que CellTable Cell use HTML?

TextColumn<MyCell> column1 = new TextColumn<MyCell>() 
    { 
     @Override 
     public String getValue(MyCell myCell) 
     { 
      String result = "  " +myCell.getValue(); 
      return result; 
     } 
    }; 
    table.addColumn(column1 , "Header1"); 

Sé que esto se puede hacer usando css, pero solo quiero saber cómo poner el código HTML en las celdas. ¡Cualquier ayuda es apreciada!

Respuesta

16

AFAIK se ignoran los espacios en blanco adicionales en HTML; debe usar la etiqueta previa para mantener el formato. De todos modos, encuentre mi columna de muestra a continuación. Genera una agradable barra de progreso a partir de valores contenidos en objetos respaldados por el proveedor de datos.

final SafeHtmlCell progressCell = new SafeHtmlCell(); 

    Column<UiScheduledTask, SafeHtml> progressCol = new Column<UiScheduledTask, SafeHtml>(
      progressCell) { 

     @Override 
     public SafeHtml getValue(UiScheduledTask value) { 
      SafeHtmlBuilder sb = new SafeHtmlBuilder(); 
      float percent = new Float(value.getCompleted()) 
        /new Float(value.getAll()); 
      int rounded = Math.round(percent * 100); 
      sb.appendHtmlConstant("<div style='width: 100px; height: 20px; position: relative;'>"); 
      sb.appendHtmlConstant("<div style='z-index: 2; display: inline; width: 100px; position: absolute; left: 0px, top: 0px; text-align: center;'>" 
        + value.getCompleted() 
        + "/" 
        + value.getAll() 
        + "</div>"); 
      sb.appendHtmlConstant("<div style='position: absolute; left: 0; top: 0; width: 100px; z-index: 1'><div style='display: inline; float: left; width: " 
        + rounded 
        + "%; height: 20px; background-color: #82cd80;'></div>"); 
      sb.appendHtmlConstant("<div style='display: inline; float: right; width: " 
        + (100 - rounded) 
        + "%; height: 20px; background-color: #c54c4d;'></div></div>"); 
      sb.appendHtmlConstant("</div>"); 
      return sb.toSafeHtml(); 
     } 
    }; 
+0

Gracias jgrabowski! Esto funciona perfecto! Y sí, se ignoran los espacios en blanco adicionales en html a menos que use la etiqueta previa. – gusper

+0

Gracias, esto es lo que estoy buscando. –

+0

Tal vez las etiquetas de entidad   funcionarían también. –

Cuestiones relacionadas