2011-01-29 7 views
18

私はレコードを表示するためにCellTableを使用していますが、今は、ユーザーがセルをクリックしたときに選択ボックスを表示する必要があります。もう一つは、選択ボックスが私自身のウィジェットであり、あらかじめ定義されたものではないということです。あなたは私にこれを行う方法を提案してもらえますか?CellTableセルにウィジェットを配置するにはどうすればよいですか?

+0

してくださいあなたの記事で(http://stackoverflow.com/faq#signatures)[署名やキャッチフレーズを使用していません]。 – meagar

+0

私は同じ問題を抱えています。かなり重いウィジェット(ロジックに関して)をテーブル内のセルにレンダリングする必要があります。私がCellTableから欲しかったのは、IsWidgetファクトリを供給して、各セルを列に描画するためのウィジェットを生成することでした。私はこれを行う簡単な方法を見ることができませんが、私はむしろ最初からテーブルを実装しないでしょう。 – drdozer

答えて

23

the answerについて説明しているGWT Googleグループの投稿があります。基本的には、カスタムウィジェットを通常どおり作成し、レンダリング関数内で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()); 
     } 
} 
+4

widget.getElement.getInnerHTML()を使用する代わりに、外側のHTMLが含まれているため、widget.getElement.getString()を使用しています。 –

+1

同じウィジェットを再利用して各セルのHTMLをレンダリングすることは可能ですか? (私はおそらくちょうど興味をそそられた..を見つけるためにいくつかのコードを書く必要があります) – HaveAGuess

2

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

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

8

これは反パターンです。セルの目的は、あなたがウィジェットを持たないようにすることです:あなたは、セル内でhtmlを直接レンダリングすることになっています。

+0

なぜ彼らはcelltablesにUIBinderウィジェットサポートを追加しましたか? (まさに引用ではなく、スレッドから:http://groups.google.com/group/google-web-toolkit/browse_thread/thread/9cfb4a3b5c4af0be/b75305d15a1c32e8?lnk=gst&q=celltable+widget#b75305d15a1c32e8) – HaveAGuess

+0

は、しかし時には必然的に – jabal

+0

私は同意しない、時々あなたはHTMLを気にしたくないし、GWTがあなたのためにウィジェットをレンダリングするようにしたい。 – RockyMM

7

答えを説明するGWT Googleグループの記事があります。基本的には、カスタムウィジェットを通常どおり作成し、レンダリング関数内で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()); 
    } 
} 

それは動作しますが、制限があります:あなたはがあなたのウィジェット(外側または内側の)上で直接任意のハンドラをアタッチすることはできません

  • が。

例:

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!!! 
    } 
}); 
+1

この制限の回避策はありますか?私は本当にそのようなfuncitonalityを実装したい。 – nanospeck

+0

にはhttp:// stackoverflowがあります。com/questions/4691801/how-can-i-render-a-clickabletext-cell-anchor-in-a-gwt-celltable 「thomas」の回答を見てください – user949110

+0

クリックイベントがトリガーされることに注意してください列内の**何でも**をクリックするたびに列に2つのボタンがある場合、どのボタンをクリックするかを区別することはできません。この場合、この回答を参照してください - http://stackoverflow.com/questions/9108317/gwt-celltable-need-to-have-two-buttons-in-last-single-cell-of-each-row。 – Ben

関連する問題