在GWT 2.5 RC中引入了CellTableBuilder API,但尚未提供全面的文档.是否有使用CellTableBuilder实现按需自定义行构建的教程\示例?到目前为止,我发现的唯一一个例子就是这个http://showcase2.jlabanca-testing.appspot.com/#CwCustomDataGrid,但这对我来说非常困惑.
因此,我的目标是创建包含小部件的额外行,该小部件提供有关表中单击行的详细信息.
我找到了适合这个问题的解决方案.这是代码示例:
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.
希望这有用.