2012-01-02 47 views
0
var skip = selectedPage*pageSize; 
      var take = Math.Min(result.DataSourceCount - skip, pageSize); 

      List<SENTINEL_OPERATION> results = sentinelOperationManager.SearchSentinelOperations(sid).Skip(skip).Take(take).ToList(); 

我的最後一頁總是很空。我使用PageDataSource來獲取頁面大小併發送使用jquery ajax get的點擊頁面。我錯過了什麼?謝謝分頁使用跳過和採取的方法

+2

selectedPage是從1還是0開始? – alun 2012-01-02 13:55:19

+0

對於'take'的數量,您可以使用'pageSize' - 如果提供的列表較小,則沒有問題。 – 2012-01-02 14:01:34

+0

@alun它從1開始,所以我加了-1,似乎現在工作。 – Johan 2012-01-02 14:04:39

回答

6

我敢打賭,selectedPage從你的代碼中的1開始,這導致了錯誤。然後在第一頁上獲得skip == pageSize,並且您在最後一頁上「超出範圍」,但是您跳過了「真正的」第一頁。

如果從1selectedPage開始,然後改變這個公式:

var skip = (selectedPage - 1) * pageSize; 

此外 - 沒有必要手動計算take值。你可以通過pageSize,它會一直工作。如果您的數據源不包含足夠的元素,則不會發生任何錯誤,只會返回可用的元素。

+0

剛剛注意到第一部分。這是對的。我也調整收件人部分,謝謝! – Johan 2012-01-02 14:05:38