@@ -33,7 +33,10 @@ public abstract partial class CccfQueryViewModelBase : ObservableRecipient
3333
3434 protected CccfRequest ? _lastCombinedRequest ;
3535
36- protected int _lastPageNumberBeforeCancel = 1 ;
36+ /// <summary>
37+ /// 记录查询发生异常前的页码。发生异常时,页码条将重置 <see cref="PageNumber"/>,导致期望的页面丢失。
38+ /// </summary>
39+ protected int _lastPageNumberBeforeError = 1 ;
3740
3841 protected bool _pageNumberChanged ;
3942
@@ -212,7 +215,7 @@ public virtual async Task QueryAsync(CancellationToken cancellationToken = defau
212215 {
213216 try
214217 {
215- _lastPageNumberBeforeCancel = PageNumber ;
218+ _lastPageNumberBeforeError = PageNumber ;
216219 HasError = false ;
217220 QueryResultMessage = "" ;
218221
@@ -283,31 +286,17 @@ public virtual async Task RefreshAsync(CancellationToken cancellationToken)
283286 await _navigationService . NavigateAsync ( async ( ) => {
284287 SmartRequest . RejectChanges ( ) ;
285288 CccfRequest . RejectChanges ( ) ;
286-
287- CccfQuerySession session ;
288- PageNumber = _lastPageNumberBeforeCancel ;
289+ PageNumber = _lastPageNumberBeforeError ;
289290
290291 try
291292 {
292293 await QueryCommand . ExecuteAsync ( cancellationToken ) ;
293294 }
294- catch ( TaskCanceledException )
295- {
296- session = new CccfQuerySession (
297- _lastPageNumberBeforeCancel ,
298- SmartRequest ,
299- CombinedRequest ,
300- UseCombinedQuery ,
301- QueryResponse ,
302- HasError ,
303- "刷新请求被取消。" ,
304- _scrolledVerticalOffset ) ;
305-
306- return session ;
307- }
295+ catch
296+ { }
308297
309- session = new CccfQuerySession (
310- PageNumber ,
298+ var session = new CccfQuerySession (
299+ _lastPageNumberBeforeError ,
311300 SmartRequest ,
312301 CombinedRequest ,
313302 UseCombinedQuery ,
@@ -382,8 +371,15 @@ await _navigationService.NavigateAsync(async () => {
382371 PageNumber = pageNumber ;
383372 }
384373
374+ try
375+ {
376+ await QueryCommand . ExecuteAsync ( cancellationToken ) ;
377+ }
378+ catch
379+ { }
380+
385381 var session = new CccfQuerySession (
386- PageNumber ,
382+ _lastPageNumberBeforeError ,
387383 SmartRequest ,
388384 CombinedRequest ,
389385 UseCombinedQuery ,
@@ -392,17 +388,6 @@ await _navigationService.NavigateAsync(async () => {
392388 QueryResultMessage ,
393389 0d ) ;
394390
395- try
396- {
397- await QueryCommand . ExecuteAsync ( cancellationToken ) ;
398- session . QueryResponse = QueryResponse ;
399- }
400- catch ( TaskCanceledException )
401- {
402- session . QueryResponse = null ;
403- session . QueryResultMessage = "查询请求被取消。" ;
404- }
405-
406391 Messenger . Send ( new ScrollBarOffsetMessage ( ) {
407392 VerticalOffset = 0d
408393 } , "RestoreCccfQueryResultsScrollOffset" ) ;
@@ -447,7 +432,7 @@ protected virtual void NavigationService_Navigated(object? sender, NavigationEve
447432 if ( e . NavigationMode is NavigationMode . Back or NavigationMode . Forward )
448433 {
449434 var cloned = e . Current . DeepClone ( ) ;
450- _lastPageNumberBeforeCancel = cloned . PageNumber ;
435+ _lastPageNumberBeforeError = cloned . PageNumber ;
451436 PageNumber = cloned . PageNumber ;
452437 SmartRequest = cloned . SmartRequest ;
453438
0 commit comments