19

CellTable を使用してレコードを表示していますが、ユーザーがセルをクリックしたときに選択ボックスを表示する必要があります。もう1つ、選択ボックスは事前定義されたウィジェットではなく、独自のウィジェットです。これを行う方法を教えてください。

4

5 に答える 5

24

答えを議論するGWTグーグルグループの投稿があります。基本的には、通常どおりカスタムウィジェットを作成し、レンダリング関数内でwidget.getElement()。getInnterHTML()を使用します。

@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
            String value, SafeHtmlBuilder sb) {
        if (value != null) {
             MyWidget widget = new MyWidget(value);
             sb.appendEscaped(widget.getElement.getInnerHTML()); 
        }
}
于 2011-03-17T12:33:45.227 に答える
10

これはアンチパターンです。セルの全体的な目的は、ウィジェットを持たないようにすることです。セルで直接htmlを「レンダリング」することになっています。

于 2011-05-06T21:24:02.280 に答える
7

答えを議論するGWT googleグループに投稿があります。基本的に、通常どおりカスタム ウィジェットを作成し、レンダリング関数内で widget.getElement().getInterHTML() を使用します。

@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
    if (value != null) {
         MyWidget widget = new MyWidget(value);
         sb.appendEscaped(widget.getElement.getInnerHTML()); 
    }
}

機能しますが、制限があります。

  • ウィジェット (外側または内側) にハンドラーを直接アタッチすることはできません。

例えば:

widget.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
        // Won't work!!!
    }
});

また:

widget.getMyTextBox().addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
        // Won't work!!!
    }
});
于 2013-03-12T14:38:07.863 に答える
3

しばらく前に同様の問題に直面しましたが (CellList セルにカスタム ウィジェットを挿入しようとしました)、残念ながら簡単な解決策は見つかりませんでした。

通常、 AbstractCellまたはActionCellを拡張して、特定のセル クラスを実装できます。この場合、render() メソッドをオーバーライドし、独自のレンダリングを実装する必要があります。良い例がAbstractCell クラスの javadocにあります。

于 2011-01-29T07:58:15.743 に答える