如何在zk中使用onScroll和onScrolling事件

时间:2018-03-26 09:56:33

标签: java events zk

在我的系统中,我想向组件添加事件监听器,如下所示:

itemCustGrid.addEventListener(Events.ON_SCROLLING, new EventListener<ScrollEvent>() {...});

然后我检查zk,网格组件不支持onScrolling事件或onScroll事件。

Class HtmlBasedComponent:
 * <p>Events:<br/>
 *  onClick, onDoubleClick, onRightClick, onDrop,
 *  onMouseOver, onMouseOut, onOK, onCacnel, onCtrlKey and onSwipe.<br/>

所以我在我自己的组件中注册事件如下:

addClientEvent(BaseGrid.class,Events.ON_SCROLLING,CE_IMPORTANT);     addClientEvent(BaseGrid.class,Events.ON_SCROLL,CE_IMPORTANT);

但仍然无法正常工作。它该怎么办?

1 个答案:

答案 0 :(得分:1)

可以在JavaScript中在客户端监听滚动事件,如下所示:

<listbox xmlns:w="client" w:onScroll='console.log("scroll")' />

您可以应用zul中显示的客户端侦听器,或Java代码中的Component.setWidgetListener()

在该客户端监听器中,您可以send a custom event to the server side

<listbox rows="2" xmlns:w="client" 
        w:onScroll='zAu.send(new zk.Event(this, "onClientScroll", {data: "I scrolled!"}, {toServer:true}));'
        onClientScroll='System.out.println(event.getData())'>

这将在服务器端输出{"data":"I scrolled!"}。但请注意:滚动事件经常被抛出。您可能希望延迟事件发送一点来限制流量。