在网格首次连接后为网格单元添加(悬停)侦听器



我有这样的东西。

Grid<Stock> mygrid = new Grid<Stock>(store, cm)
{
    @Override
    protected void onAfterFirstAttach() 
    {       
        super.onAfterFirstAttach();
        //here do the binding for the cell elements that have myclass
    }
};

对于mygrid我有这个

的看法
view.setViewConfig(new GridViewConfig<Stock>()
{
    @Override
    public String getRowStyle(Stock model, int rowIndex)
    {
        return "";
    }
    @Override
    public String getColStyle(Stock model, ValueProvider<? super Stock, ?> valueProvider, int rowIndex, int colIndex)
    {       
        String style = "";
        if(SOME_CASE)
        {
            style = "myclass"; 
        }
        return style;
    }
});

我想做的是onAfterFirstAttach我想添加一些侦听器/处理程序,在hover期间会做一些事情,让我们说为了简单起见,给一个alert

我正在尝试做的事情可能吗?我可以在不使用JSNI或像gwtquery这样的库的情况下完成我想要的吗?是否确定onAfterFirstAttach所有应具有类myclass的单元格都可用且可访问?如果是,我如何附加我想要的侦听器/处理程序?

这些问题似乎很多,但我相信它们都是相互关联的。

我正在使用GWT 2.6和GXT 3.1。

更新

我忘了提到一个可行的解决方案是为整个网格上的鼠标移动添加一个侦听器,然后获取每个单元格并检查它是否具有所需的类,但这似乎有点过分了。必须有一个更简单的方法。

浏览器会触发本机事件(单击、焦点、模糊等(,无论您是否需要它们。这些事件"冒泡"在 DOM 树上,让您有机会在正确的级别"倾听"它们。

在您的示例中,您可以在单元级别创建 30 个侦听器,等待"他们的"单元中发生某些事情。这是一个繁重(30 个对象(且速度慢(构建和绑定所有对象需要时间(的解决方案。或者,您可以在网格级别创建单个侦听器,该侦听器侦听从单元格冒出的所有事件,并决定是否需要执行某些操作或应忽略某个事件。单个侦听器更轻,可以更快地创建。另一方面,它需要检查事件,尽管它通常是一个快速有效的操作(例如,检查事件源具有特定的类名(。另请注意,当浏览器通常没有太多事情要做时,此操作需要一些时间,因此仅检查事件以忽略它们不会影响用户体验。

根据我的经验,单个侦听器几乎总是更好的解决方案,尽管现代浏览器和计算机的速度如此之快,以至于差异很少明显。

最新更新