8

GWT 2.5 では RC CellTableBuilder API が導入されましたが、包括的なドキュメントはまだありません。CellTableBuilder を使用してオンデマンドのカスタム行構築を実装するチュートリアルや例はありますか? これまでに見つけた唯一の例は、これhttp://showcase2.jlabanca-testing.appspot.com/#!CwCustomDataGridですが、私にとってはかなり混乱しています。

したがって、私の目標は、テーブル内のクリックされた行に関する詳細を提供するウィジェットを含む追加の行を作成することです。

4

2 に答える 2

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();
}}

余分な行の出現につながるイベントを処理するときは、TableBuilder にアタッチされている CellTable で redrawRaw(rowIndex) を呼び出す必要があることに注意してください。そして、この呼び出しの前に、ターゲット行 ID をエレメント Set に追加する必要があります。

これがお役に立てば幸いです。

于 2012-07-06T11:02:01.573 に答える