2009-10-20 90 views
-3

如何在Datalist中進行尋呼。我需要頁碼如下:在Datalist中尋呼

< 1 2 3 4 5> 當點擊「>」未來5頁應該顯示...

讓我清除我的編碼流......我會名單從數據庫使用存儲過程和整個記錄。然後,根據頁數,應該顯示頁碼。我只需要在頁面中顯示有限數量的頁碼。 當我點擊下一個按鈕時,應該顯示下一組頁碼。我的存儲過程將返回數據集。 這是我的傳呼代碼..

私人無效doPaging(){

DataTable dt = new DataTable(); 
    dt.Columns.Add("PageIndex"); 
    dt.Columns.Add("PageText"); 
    for (int i = 0; i <= totalpage; i++) 
    { 
     DataRow dr = dt.NewRow(); 
     dr[0] = i; 
     dr[1] = i + 1; 
     dt.Rows.Add(dr); 
    } 

    dlPaging.DataSource = dt; 
    dlPaging.DataBind(); 
} 

此代碼將在一個頁面同時顯示所有頁碼..相反,我只需要5個頁碼應該顯示一次。當我點擊下一個按鈕時,應該顯示下5個頁碼。

+2

什麼語言/框架? – 2009-10-20 09:16:24

+0

我正在做ASPNET(DOTNET) – Nila 2009-10-20 09:28:46

+0

請告訴我們您正在使用什麼樣的數據源,SQL Server? LINQ to SQL?對象數組? – 2009-10-20 09:32:22

回答

5

由於您沒有指定您正在使用的確切語言和框架。我會試着給你一個關於如何成功創建分頁的一般答案。

我假設你有一個網站,或者如果它是一個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