使用GWT CellTableBuilder按需构建自定义行

Ant*_*lov 8 gwt

在GWT 2.5 RC中引入了CellTableBuilder API,但尚未提供全面的文档.是否有使用CellTableBuilder实现按需自定义行构建的教程\示例?到目前为止,我发现的唯一一个例子就是这个http://showcase2.jlabanca-testing.appspot.com/#CwCustomDataGrid,但这对我来说非常困惑.

因此,我的目标是创建包含小部件的额外行,该小部件提供有关表中单击行的详细信息.

Ant*_*lov 6

我找到了适合这个问题的解决方案.这是代码示例:

public class CustomCellTableBuilder extends AbstractCellTableBuilder<Object>{
//here go fields, ctor etc.

//ids of elements which details we are going to show 
private Set elements;

@Override
protected void buildRowImpl(Object rowValue, int absRowIndex){
   //building main rows logic 

    if(elements.contains(absRowIndex)){
        buildExtraRow(absRowIndex, rowValue);
        elements.add(absRowIndex);
    }
}

private void buildExtraRow(int index, Object rowValue){
    TableRowBuilder row = startRow();
    TableCellBuilder td = row.startTD().colSpan(getColumns().size());
    DivBuilder div = td.startDiv();

    Widget widget = new Widget();

    //update widget state and appearance here depending on rowValue

    div.html(SafeHtmlUtils.fromTrustedString(widget.getElement().getInnerHTML()));

    div.end();
    td.endTD();
    row.endTR();
}}
Run Code Online (Sandbox Code Playgroud)

应该提到的是,当你处理一些导致出现额外行的事件时,你应该在连接到TableBuilder的CellTable上调用redrawRaw(rowIndex).在此调用之前,必须将目标行ID添加到元素Set.

希望这有用.