【问题标题】: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 毫秒后启用分页链接,但我想知道如何获取当前页面上完全获取数据的确切时刻。
谢谢。

【问题讨论】:

    标签: gwt pager repeat


    【解决方案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),因此无法在寻呼机内部执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多