1

私はSenchaのGXT3.0を使用して、XTemplate(html / css)で定義されたカスタムレンダリングでListViewCustomAppearanceをレンダリングしています。読み取り専用の場合、またはリストレベルでインタラクションが発生する場合(つまり、アイテムの選択、アイテムの選択解除)にうまく機能します。

テンプレートのマークアップで定義された要素にマウスイベントを追加するにはどうすればよいですか?私の最終目標は、リスト内のアイテム内にクリック可能な要素を含めることです。イベントハンドラーはJavaになります。

これが間違った方向に進んでいる場合はお知らせください。

4

1 に答える 1

1

ListViewCustomAppearance各子がどのように描画されるかだけでなく、子のdomを完全に再構築する場合に便利です。これらのいずれかを作成することにより、選択の処理方法を決定する責任を引き継ぐことになります(com.sencha.gxt.widget.core.client.ListViewCustomAppearance.onSelect(XElement, boolean)方法を参照)。

ListView選択を管理する方法をすでに知っているので、これは重要です!さまざまなインタラクションを処理するようにそれ自体を設定および構成し、ListViewSelectionModelそこでListViewイベントをリッスンできます。

代わりに、データを希望どおりにレンダリングするカスタムCell(おそらくクラスから開始)を作成することを検討してください。AbstractCellメソッドをオーバーライドして、render新しいコンテンツを追加する方法を指定します。

もう1つのヒント-ListViewSelectionModelユーザーインタラクションについて取得しようとしているデータの種類によっては、このアイデアがうまくいかない場合があります。代わりに、メソッドをオーバーライドすることも検討してonBrowserEventください。これにより、変更されたアイテムのモデルオブジェクト、(renderメソッドからの)レンダリングされたコンテンツのルートへの参照、およびイベント自体が提供されます。イベントオブジェクトを使用して、何が起こったかを確認します(文字列イベントタイプに対してevent.getType()をテストします)。サブクラスAbstractCell化するときは、関心のあるイベントをスーパークラスコンストラクターに渡す必要もあります。

ActionCellこれを大まかにする方法のかなり良い例としてチェックしてください。それは再利用できるように十分に抽象的であるように設計されていますが、それはまたそれをより貧弱な例にする傾向があります。

于 2012-10-23T02:04:34.813 に答える