1

我有一个从数据库中填充的网格并且工作正常。现在我想向这个网格添加一个鼠标悬停事件并显示一个工具提示文本,该文本以多行方式显示突出显示的记录的所有列值。这里的商业案例是网格中显示了相当多的列,用户希望在选择记录之前快速预览而不是水平滚动到最后。在这种情况下,挤压所有这些列以适应屏幕并不是一个干净的解决方案。

我尝试查看 GXT 3.0 API 中用于 Grid 和 GridView 的所有可用方法,但找不到任何东西来获取突出显示的记录。MouseMove、MouseDown 和 MouseClick 有几个事件,但 MouseOver 没有。

我也尝试了各种论坛以找到解决方案,但似乎还没有一个解决方案,所以我认为如果我开始这个帖子,它可能对其他人也有用。

请注意,此问题与 Ext-JS 无关。我使用的版本是 Ext-GWT 3.0.1。

谢谢

4

2 回答 2

2

MouseMove是你想要的那个。仅当鼠标悬停在小部件上时才会触发。

或者,您可以使用以下方法将 DOM 事件接收到小部件:

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

在您的小部件的constructoronLoad方法中,然后覆盖小部件的 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

您可以通过创建自定义 Cell 并将其传递给网格的特定 ColumnConfig 来完成此操作。

使用自定义单元格,您可以访问您需要的所有事件。一旦您可以访问所需的信息,就可以通过多种方式显示它。GXT为此提供了很多解决方案。快速提示可能是去这里的方式。

于 2012-11-26T16:42:42.937 回答