0

パフォーマンス上の理由から、カスタムメイドのテーブルがあります。テーブルは HTML DIV として作成された列で構成され、行は AbsolutePanel にラップされます。列と行の位置は絶対であり、レンダリング ループで計算されます。テーブルが ScrollPanel に追加され、行の表示部分のみがレンダリングされ、ユーザーがスクロールすると行が追加されます。

お客様の要件は、PopupPanel を開いて、行がクリックされたときに行に関する詳細を表示することです。クリック イベントをシンクして、行パネルに ClickHandler を追加しました。これは正常に動作します。

問題は、たとえば、標準リンクまたはクリック可能なアイテムをテーブルのセルの 1 つに追加すると、そのアイテムをクリックすると、行クリック ハンドラーが起動することです。イベントのソースは行要素であり、リンク/アイコン/クリックされたものではありません。

これを解決するための助け(おそらく完全に異なるアプローチですか?)は大歓迎です。

4

1 に答える 1

0

そのシンプルさとパフォーマンスのために、gwtqueryを使用します。

アプリによってレンダリングされた最終的な dom はわかりませんが、次のようなものがあるとします。

<div id="column1">
  <div id="row1_1" class="my_row" product_id="whatever"> content </div>
   ...
</div>

コードは次のようになります。

import static com.google.gwt.query.client.GQuery.*;

$(".my_row").click(new Function(){
  public void f() {
    // The gquery instance of the row clicked
    GQuery thisRow = $(this);

    // Use gquery methods to get some info of your row
    String thisId = thisRow.id();
    String productId = thisRow.attr("product_id");
    Element thisElement = thisRow.get(0);

    // do Something with your row 
    ...

  }
});
于 2013-06-03T17:02:45.487 に答える