快速单击页面链接时,寻呼机开始来回切换页面

Posted

技术标签:

【中文标题】快速单击页面链接时,寻呼机开始来回切换页面【英文标题】:Pager starts to change pages back and forth when clicking page links fast 【发布时间】:2014-02-05 09:29:18 【问题描述】:

我有一个从 AbstractPager 扩展的寻呼机,其中每次更改范围或行数时,我都会重新创建其中包含的 NavLink,因此寻呼机看起来像这样: 1 2 3 … N-1 N N+1 … M-2 M-1 M 我的算法工作正常,但是当我开始快速(就像非常疯狂地)点击链接时,一个 RangeChange 事件正在执行(我的寻呼机附加到的 CellTable 显示旋转试图在给定页面上获取数据)已经有另一个事件总线。它会导致在无限循环中来回更改当前页面。 我尝试仅在使用 Scheduler.get().scheduleDeferred 和 .scheduleFinally 完全获取当前页面时启用分页链接,但没有运气。 我的临时解决方案是使用 Scheduler.get().scheduleFixedDelay() 在 500 毫秒后启用分页链接,但我想知道如何获取当前页面上完全获取数据的确切时刻。 谢谢。

【问题讨论】:

【参考方案1】:

如果您有同样的问题,您需要在 CellTable 上挂起 LoadingChangeEvent.Handler,检查数据是否已完全加载并通知寻呼机,以便寻呼机可以激活它的 NavLinks:

pager.setDisplay(cellTable);
cellTable.addLoadingStateChangeHandler(new LoadingStateChangeEvent.Handler() 
    @Override
    public void onLoadingStateChanged(LoadingStateChangeEvent event) 
        if (event.getLoadingState() == LoadingStateChangeEvent.LoadingState.LOADED) 
            pager.activateNavLinks();
        ;
    
);

由于 setDisplay() 接受 HasRows 而 addLoadingStateChangeHandler() 在 AbstractHasData 中(AbstractHasData 实现 HasData,HasData 实现 HasRows),因此无法在寻呼机内部执行此操作。

【讨论】:

以上是关于快速单击页面链接时,寻呼机开始来回切换页面的主要内容,如果未能解决你的问题,请参考以下文章

在Vue 3中单击路由器链接时如何在不重新加载页面的情况下切换侧边栏

tablesorter 寻呼机识别页面

关于含RecyclerView的fragment来回切换时页面自动滑动到底部的解决方法

rowList 的文本框而不是 jqGrid 寻呼机中的选择

C# Winform多窗口间切换

转到不同页面链接上的特定选项卡单击并切换活动类