4

私はGWTショーケースの例からカスタムデータグリッドを使用しています.. http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCustomDataGrid

すべてが正常に機能しています..セルテーブルの行内にサブ行があります..

私はアンカーセルを持っています..メイン行とサブ行にあります..

メイン行のClickHandlerは機能していますが、サブ行では機能していません..

これはそのセルの私のコードです

// ViewDetail.
td = row.startTD();
td.className(cellStyles);
td.style().trustedColor("blue");
td.style().cursor(Cursor.POINTER);

if (isNetworkRow) {
  //td.text("subRowsAnchor");
} else {

}
renderCell(td, createContext(19), viewDetailsColumn, rowValue);

行またはサブ行の両方のケースでセルをレンダリングしているので、アンカーとそのclickHandlerも機能します..

どのアンカーがクリックされたか、メイン行またはサブ行を区別できる方法はありますか。

私はちょっとした回避策を作ろうとしました。つまり、サブ行の場合はアンカーテキストの名前を変更します..私のコードでできるように.. td.text..

しかし、renderCellでエラーが発生します...

HTML の追加後または子要素の追加後に属性を追加することはできません。

どんなアイデアでも、解決策は何ですか...

ありがとう

4

1 に答える 1

1

どの行がクリックされたかを区別するには (ショーケースのサンプルによるが、一般的には同じはずです)、単にどの行が選択されたかに依存します (選択処理をオーバーライド/無効にしていない場合)。

列に を設定しFieldUpdater(アンカー セルを使用してそれ自体をレンダリングします)、 を使用してサブ行の選択を確認しgetKeyboardSelectedSubRow()ます。何かのようなもの:

yourColumn.setFieldUpdater(new FieldUpdater<T, String>() {
  public void update(int index, T object, String value) {
    if (yourGrid.getKeyboardSelectedRow() != -1 ) {
      if (yourGrid.getKeyboardSelectedSubRow() > 0) {
        // Subrow selected.
      } else {
        // Main row selected.
      }
    }
  }
});
于 2013-05-13T11:03:14.940 に答える