GWT を使用して Web アプリケーションを作成するプロジェクトを継承しました。Bootstrap3 の GWT ラッパーを使用して要素のスタイリングを行います。これは、ほとんどの場合うまく機能しています。Select
現在 GWT を使用している GWTDataGrid
テーブルにBootstrap3 を追加しようとすると、障害が発生しましたSelectionCell
。問題は、 aSelectionCell
が「ブートストラップ スタイル」ではないため、残りの Web アプリケーションのスタイルと一致しないことです。
残念ながら、は GWTインターフェースを実装しておらず、 に追加できるクラスを拡張していないため、Select
を GWT に単純に追加することはできません。サブクラス化と実装により、この問題が修正されます。ただし、が でラップされていない DOM にアタッチされた後に JavaScript 関数を実行する必要があるため、 を適切にレンダリングすることはできません。DataGrid
Select
Cell
Column
DataGrid
Select
Cell
Select
Select
Column
DataGrid
代わりに、 の関数SafeHtmlBuilder
によって にレンダリングされます。render
Cell
// GWTBootstrap3::Select function to render the Select
public void render() {
if (isAttached())
command(getElement(), SelectCommand.RENDER);
}
protected native void command(Element e, String command) /*-{
$wnd.jQuery(e).selectpicker(command);
}-*/;
Select
はDOMに接続されていないため、関数を手動で呼び出す必要がありますselectpicker
。SafeHtmlBuilder
彼のために、が に追加された後に呼び出す必要がある独自のネイティブ関数を作成しましたDataGrid
。Select
サブクラスが を介してイベントを受け入れ、セルCLICK
をクリックした後にネイティブ関数を呼び出すと、適切にレンダリングされます。Cell
onBrowserEvent
Select
私が理解できないのは、RPC呼び出しによって行が追加された後、selectpicker
関数をプログラムで呼び出して自動的にレンダリングする時期です。Select
さまざまなハンドラーを登録しようとしましたが、役に立ちませんでした。ハンドラーが呼び出され、関数をラップするネイティブ関数selectpicker
も呼び出されますが、HTMLselect
がまだテーブルに追加されていないようです。ブラウザの JavaScript コンソールから切り取った上記の JavaScript を呼び出すこともできます。だからそれはうまくいくはずですが、私は電話するのに適切な場所を見つける必要があります:(
DataGrid
私が使用しているハンドラー:
- addLoadingStateChangeHandler
- addRowCountChangeHandler
DataGrid
また、データに追加する呼び出しが行われた後、別の場所でそれを呼び出そうとしました。繰り返しますが、HTMLselect
は に追加されていないようですtable
。すなわち。への呼び出しの直後に切り取られた JavaScript を呼び出すとmyListDataProviderObject.getList()addAll(my data)
。