2014-02-05 1 views
0

범위 또는 행 개수가 변경 될 때마다 호출기가 확장 된 Pager가 있습니다. 포함 된 NavLink를 다시 생성하므로 호출기는 다음과 같습니다.
1 2 3 ... N-1 N N + 1 ... M-2 M-1 M
내 알고리즘은 잘 작동하지만 RangeChange 이벤트가 수행중인 시간 (실제로 무섭게) 링크를 빨리 클릭하기 시작할 때 (내 호출기가있는 CellTable 연결된 페이지는 주어진 페이지에서 데이터를 가져 오려고 시도하는 것을 보여줍니다.) 이미 EventBus에 오는 또 다른 것들이 있습니다. 현재 페이지를 무한 루프로 앞뒤로 변경합니다.
scheduler.get(). scheduleDeferred 및 .scheduleFinally를 사용하여 현재 페이지를 competently 페치 할 때만 페이징 링크를 활성화하려고했지만 행운이 없었습니다.
임시 해결책은 scheduler.get(). scheduleFixedDelay()를 사용하여 500ms 후에 페이징 링크를 활성화하는 것입니다. 그러나 완전히 페치 된 현재 페이지에서 데이터의 정확한 순간을 얻는 방법을 알고 싶습니다.
감사합니다.페이저는 페이지 링크를 빠르게 클릭 할 때 페이지를 앞뒤로 바꾸기 시작합니다.

답변

0

당신은 당신이 당신의 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를 구현) 이후 호출기에서 내부적으로 수행합니다.

관련 문제