0

階層データを表す GWT でグリッドを作成しようとしています。異なるレベルの列は同じで、製品がカテゴリで利用可能かどうかを表します。

そんな感じ:

                      A | B | C | D
+ Product 1.1         X       X   X
  + Product 1.2       X       X   X
    + Product 1.3     X           X
+ Product 2.1             X
  + Product 2.2           X
...

CellTable を使用して Handlers を追加して行を表示/非表示にすることはできますが、すべての子孫を非表示にするにはどうすればよいでしょうか?

4

2 に答える 2

0

基本的にMVCで作業します。コントローラーはイベントをキャッチし、モデルを更新してから、データプロバイダーに表示を更新するように依頼します。

私が考えることができる最も簡単な方法は、たとえば製品 2.1 の子孫を非表示にするよう求めるイベントをキャッチし、モデル オブジェクト (私が推測するリスト) を循環させ、それに応じて子要素を更新する場合です。次に、dataProvider で適切なメソッドを使用して cellTable を更新します。

于 2013-08-08T08:08:06.197 に答える
0

だからここに私の解決策があります:

単一の行 (ClickHandler を除く) にリスナーを追加したり、カスタム行 (GWT 2.4 を使用しています) を作成したりすることはできないため、カスタム列を作成する必要がありました。次に NodeCell を作成しまし。これは、テキストのに+/- ボタンを表示するButtonCellの単純なバリエーションです。列が「ノード」の場合、NodeCellが使用されます。ボタンをクリックすると、EventBusExpandEventが発生します。

行を表すウィジェットを取得する方法が見つからないため、カスタム テーブルのコンストラクターでgetRowElement()を使用して取得した行のスタイルを変更するハンドラーをEventBusに追加しました。ExpandEventのパラメーターは、行インデックスを提供します。

于 2013-08-08T12:03:41.983 に答える