在GWT 2.5中,如何基于AbstractCell填充单元格的多个部分

时间:2013-02-25 16:21:13

标签: gwt

我有一个基于AbstractCell的ContactCell类。 它有两个标签和一个图像(在GWT 2.5的UiBinder中定义)。

我如何将Column.addColumn()添加到CellTable?

如果是这样,当getValue()只返回简单值(如String)时,如何使用方法getValue()填充ContactCell的字段。

Column<Contact, String> column = new Column<Contact, String>(
    new ContactCell()) {
  @Override
  public String getValue(Contact object) {
    return object... CAN ONLY RETURN ONE VALUE. HOW TO POPULATE 2 LABELS & IMAGE?
  }
};

3 个答案:

答案 0 :(得分:0)

您可以通过覆盖单元格的onrender mathod来更改渲染字符串,如下所示。

假设可以根据getValue mathod返回的值计算2个标签和图像。

ContactCell contactCell = new ContactCell()
{
    @Override
    public void render( com.google.gwt.cell.client.Cell.Context context, SafeHtml value, SafeHtmlBuilder sb )
    {

    // do value check and compute label1 and label2 and calso compute the image path.       

    sb.appendHtmlConstant( "<label>LABEL1</label>" +"<label>LABEL2</label>"+"<image></image>" )
    }
});


Column<Contact, String> column = new Column<Contact, String>( contactCell ) 
{
  @Override
  public String getValue(Contact object) 
  {
    return object... CAN ONLY RETURN ONE VALUE. HOW TO POPULATE 2 LABELS & IMAGE?
  }
};

答案 1 :(得分:0)

您可以使用IdentityColumn代替普通Column(将通过整个Contact对象),也可以使用正常的Column

Column<Contact, String[]> column = new Column<Contact, String[]>(
    new ContactCell()) {
  @Override
  public String[] getValue(Contact object) {
    String[] retvalue = new String[2];
    retvalue[0] = "SOMETHING";
    retvalue[1] = "SOME OTHER THING";
    return retvalue;
  }
};

答案 2 :(得分:0)

如果基于AbstractCell的单元格是使用UiBinder定义的,则当前不是(GWT 2.5)可以将此类单元格添加到CellTable