2011-03-04 109 views
1

我想顯示一個有限的編號。的頁面鏈接,說10 5個鏈接,並想知道是否有任何已知或嘗試和測試方法來實現這一點。顯示有限編號。頁面鏈接分頁

因此可以說,用戶現在可以看到以下鏈接

以前,1(選擇),2,3,4,5 ...下一個

用戶點擊,說4,現在他看到

以前... 3,4(選擇的),5,6,7 ...下

現在他點擊7

以前... 6,7(選擇的),8, 9,10 ...下一個

現在我認爲這是分頁編程中非常普遍的事情。那麼是否有任何已知的算法來做到這一點。我感覺自己懶得做飯!

編輯: - 這需要在服務器端實現。我正在研究C#,但是你可以用任何語言來進行算法研究。

+0

任何特定的編程語言? – DOK 2011-03-04 20:39:56

回答

1

退房jQuery和分頁插件...

http://plugins.jquery.com/project/pagination

+0

jQuery插件是我尋找的第一件事..我甚至看到了這一個..但我是尋找服務器端的方法。不過現在看來這是最好的選擇! – Jags 2011-03-05 07:03:51

+0

謝謝,如果有幫助,記住標記爲接受?我將繼續尋找C# – Orbit 2011-03-05 07:06:46

+0

的服務器端分頁器以及我正在等待有人回答服務器端代碼!..我會接受你的答案,如果沒有答覆在一天左右或更多:) ..謝謝你的幫助 – Jags 2011-03-05 08:24:56

0

你不能用HTML來做到這一點。您必須使用PHP或JavaScript(或其他一些腳本語言)來生成鏈接。

+0

是的..你是正確的..但是我試圖找出那個..php,c#,java任何東西的邏輯 – Jags 2011-03-05 07:01:08

2

測試這一點,即使它可能是一個有點更加優美它的工作原理。我在這裏使用C#,但任何語言的邏輯都應該是相同的。如果你想出一個更好的解決方案,請發佈。如果您有任何問題,請發送至。我已經評論了代碼,以幫助更好地解釋發生了什麼。

 //Get the current page we are on 
     int start = currentPage; 
     int end = currentPage; 

     //If the page cannot be devised by 5 enter the loop 
     if ((start % 5 != 0) && (end % 5 != 0)) 
     { 
      //Get the next nearest page that is divisible by 5 
      while ((end % 5) != 0) 
      { 
       end++; 
      } 

      //Get the previous nearest page that is divisible by 5 
      while ((start % 5) != 0) 
      { 
       start--; 
      } 
     } 
     //The page is divisible by 5 so get the next 5 pages in the pagination 
     else 
     { 
      end += 5; 
     } 
     //We are on the first page 
     if (start == 0) 
     { 
      start++; 
      end++; 
     } 
     //We are on the last page 
     if (end == lastpage) 
     { 
      end = lastpage; 
     } 

     //Post your pagination links below 
     for (int i = start; i < end; i++) 
     { 
      //Your code here 
     } 
3

有一些問題的答案,尤其是泰隆的問題是,它僅更新導航時,餘數爲0,如果你想它來更新每點擊那麼下面要好得多:

var start, 
end, 
pagesCutOff = 5, 
ceiling = Math.ceil(pagesCutOff/2), 
floor = Math.floor(pagesCutOff/2); 

if(numPages < pagesCutOff) { 
    start = 0; 
    end = numPages; 
} else if(currentPage >= 1 && currentPage <= ceiling) { 
    start = 0; 
    end = pagesCutOff; 
} else if((currentPage + floor) >= numPages) { 
    start = (numPages - pagesCutOff); 
    end = numPages; 
} else { 
    start = (currentPage - ceiling); 
    end = (currentPage + floor); 
} 

顯然你通過當前頁面和numPages自己發送到函數,這將使當前頁面保持在分頁列表的中心,顯示的按鈕數應該是奇數,以便所選頁面可以「在中間「的名單。

然後,您可以執行以下循環:

for (var i = start; i < end; i++) { 
    //Your code here 
} 

如果你想下一個和前一個按鈕添加到這個再簡單地做一些事情,如:

 if(currentPage !== 1) { 
      $('<a href="javascript:void(0);" class="paginate-link" rel="' + (parseInt(currentPage) - 1) + '">&lt; Previous</a>').appendTo(navElement); 
     } 

凡navElement是一個jQuery對象$('#pagination-nav');你需要將列表添加到列表中。

希望這可以幫助別人!

乾杯

1

有一些問題的答案,尤其是泰隆的問題是,它僅更新導航時,餘數爲0,如果你想它來更新每點擊那麼下面要好得多:

//Get the current page we are on 
    int start = currentPage; 
    int end = currentPage; 

    //If the page cannot be devised by 5 enter the loop 
    if ((start % 5 != 0) && (end % 5 != 0)) 
    { 
     //Get the next nearest page that is divisible by 5 
     while ((end % 5) != 0) 
     { 
      end++; 
     } 

     //Get the previous nearest page that is divisible by 5 
     while ((start % 5) != 0) 
     { 
      start--; 
     } 
    } 
    //The page is divisible by 5 so get the next 5 pages in the pagination 
    else 
    { 
     end += 5; 
    } 
    //We are on the first page 
    if (start == 0) 
    { 
     start++; 
     end++; 
    } 
    //We are on the last page 
    if (end == lastpage) 
    { 
     end = lastpage; 
    } 

    //Post your pagination links below 
    for (int i = start; i < end; i++) 
    { 
     //Your code here 
    }