2011-04-27 70 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