1

データベースから入力され、正常に動作するグリッドがあります。次に、このグリッドにマウスオーバー イベントを追加し、強調表示されたレコードのすべての列の値を複数行で表示するツールヒント テキストを表示します。ここでのビジネス ケースは、グリッドに表示されている列が非常に多く、ユーザーがレコードを選択する前に最後まで水平方向にスクロールするのではなく、クイック プレビューを表示したい場合です。この場合、これらすべての列を画面に収まるように圧縮することは、きれいな解決策ではありません。

Grid および GridView の GXT 3.0 API で使用可能なすべてのメソッドを調べてみましたが、強調表示されたレコードを取得するためのメソッドが見つかりませんでした。MouseMove、MouseDown、MouseClick にはいくつかのイベントがありますが、MouseOver にはありません。

解決策を見つけるためにさまざまなフォーラムも試しましたが、まだ解決策がないようです。このスレッドを開始すると、他の人にも役立つかもしれないと思いました.

この問題は Ext-JS とは関係がないことに注意してください。私が使用しているバージョンは Ext-GWT 3.0.1 です。

ありがとう

4

2 に答える 2

2

MouseMoveあなたが望むものです。マウスがウィジェットの上にあるときにのみ発生します。

または、次を使用して DOM イベントをウィジェットにシンクできます。

DOM.sinkEvents(widget.getElement(), Event.ONMOUSEOVER);

ウィジェットのconstructorまたはonLoadメソッドで、ウィジェットの onBrowserEvent をオーバーライドします。

@Override
public void onBrowserEvent(Event event){
final int eventType = DOM.eventGetType(event);
    if(eventType == Event.ONMOUSEOVER) {
        //DISPLAY THE INFO
    }
}

これは、ハンドラーを直接追加するよりも間違いなく難しいですが、かなりカスタマイズ可能です。いずれかを選択できます。

ところで、次を使用してマウスの位置を取得したい場合があります。

mouseX = DOM.eventGetClientX(event);
mouseY = DOM.eventGetClientY(event);
于 2012-11-26T17:33:49.530 に答える
1

これを実現するには、カスタムセルを作成し、それをグリッドの特定のColumnConfigに渡します。

カスタムセルを使用すると、必要なすべてのイベントにアクセスできます。必要な情報にアクセスできるようになると、それを表示することはさまざまな方法で行うことができます。GXTは、このための多くのソリューションを提供します。ただし、クイックヒントはここに行く方法かもしれません。

于 2012-11-26T16:42:42.937 に答える