2011-04-27 55 views
7

我有一个CellTable,我想把HTML代码放在单元格中。 以下代码不起作用,将从输出中删除空格。GWT - 使CellTable Cell使用HTML?

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

我知道这可以用css来完成,但我只是想知道如何把HTML代码中的单元格。任何帮助表示赞赏!

回答

16

AFAIK HTML中忽略了额外的空白 - 您应该使用pre标签来保持格式。任何方法请在下面找到我的列样本。它根据数据提供者支持的对象中包含的值生成良好的进度条。

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

谢谢jgrabowski!这工作完美!是的,除非您使用pre标签,否则html中会忽略其他空格。 – gusper 2011-04-27 12:33:05

+0

谢谢,这就是我要找的。 – 2012-03-11 03:02:42

+0

也许 实体标签也可以工作。 – 2012-08-14 02:53:55