由於您沒有指定您正在使用的確切語言和框架。我會試着給你一個關於如何成功創建分頁的一般答案。
我假設你有一個網站,或者如果它是一個Windows應用程序,你有一個Next和Previous按鈕。
你需要在你的應用程序如下:
現在如果你想每頁有20個項目,你通過20把數如果該部門的其餘部分存在,則知道會有一個額外的頁面。
例
ListSize = 10
AmountOfPages = ListSize/20
if ((ListSize % 20) != 0)
AmountOfPages += 1;
現在,當我們知道有多少頁打印出來,你可以decied到全部打印出來或者沒有,那當然是你的選擇。
下一步將是有一個下一個和上一個按鈕處理當前索引的增量和減量。
每當您按下上一個,下一個或您的列表傳呼機中的號碼,您都可以輕鬆計算當前開始索引和結束索引。
既然你知道你的當前頁面上的項目的總金額可以在20和最小的指數爲0。如果你去了這個規則,你總是可以做:
指數* 20指數* 20 + 20以獲取列表的當前開始索引和列表的當前結束索引。
例
CurrentIndex = 0
ListStart = CurrentIndex * 20
ListEnd = CurrentIndex * 20 + 20
這將導致:
ListStart = 0
ListEnd = 20
而且如果你在頁面索引1你會得到以下
ListStart = 20
ListEnd = 40
現在你要做的是設置限制多少項目以及從哪裏開始獲取這幾項。
這當然取決於用於列表的數據源或數據模板。您應該查看您正在使用的模板或數據源的API。
但是,如果你看一個基本僞聲明這裏的總體思路:
select Columns from Source limit From, To
你要告訴您的數據源或SQL查詢來只是通過給定的起始限制和結束索引。上面的例子比其他數據源更適用於SQL。但它應該給你一個關於如何解決問題的想法。
編輯
據我所知你重新發布你想獲得1 - 5,當你在第一頁上,這些都是當然的頁面索引。如果你按下Next你想要6-10。
如果你仔細想想,如果你遵循上面的邏輯,你就沒有那麼難,你有頁索引並且你想要做的就是每次加5你按下「下一步」,當你按下「上一個」時減少5。
這將導致在一定程度上
例
doPaging(int direction)
{
// Direction represents the previous and next to make it easier
if (direction == 0) // previous
CurrentIndex -= 5
else if (direction == 1) // next
CurrentIndex += 5
if (CurrentIndex > MaxIndex || CurrentIndex < 0)
CurrentIndex = 0
}
假設您已經定義全局最大指數,從前面的例子,應該是很容易以下。現在,如果你有
CurrentIndex = 0
並調用doPaging(1)
CURRENTINDEX的結果將是CurrentIndex = 5
。現在您可以使用它來重複可用於導航的當前索引。
關於SQL Server和限制行,你可以look into this
什麼語言/框架? – 2009-10-20 09:16:24
我正在做ASPNET(DOTNET) – Nila 2009-10-20 09:28:46
請告訴我們您正在使用什麼樣的數據源,SQL Server? LINQ to SQL?對象數組? – 2009-10-20 09:32:22