分頁公式以及分頁導覽列總結
來源:互聯網
上載者:User
在實際編程中,經常需要把大量資料分頁顯示,並且要提供一個分頁導覽列供使用者選擇。現總結出一個用於常規分頁的公式,這個公式比較簡潔而且具有普適性。頁數=(記錄總數+每頁記錄數-1)/ 每頁記錄數注意,這裡的除法是整除。舉例驗證,假設總記錄數為10條,要求每頁顯示5條,則頁數=(10+5-1)/5=2。若總記錄數改為11條,仍然要求每頁顯示5條,則頁數=(11+5-1)/5=3。這與實際情況是如符合的。除此之外,還需要給使用者提供一個分頁導覽列,便於使用者翻頁。筆者觀察過很多網站的分頁導覽列,認為Google的分頁導覽列是最好的。它提供了頁碼和上下翻動兩種方式,而且導覽列上顯示的頁碼總是與當前頁的頁碼相鄰的若干個數。(a) 當前頁為第1頁(b) 當前頁為第8頁(c) 當前頁為最後一頁圖4.5 Google的分頁導覽列經過觀察不難發現,Google的分頁導覽列的頁碼顯示有這樣一個規律。就是當前頁碼的左側最多顯示10個比它小的頁碼,右側最多顯示9個比它大的頁碼。那麼基本的思路就是這樣的,已知當前頁碼為N,則導覽列頁碼左邊界暫設為N-10,如果N-10<1,再調整左邊界為1。導覽列頁碼右邊界暫設為N+9,如果N+9>總頁數,再調整右邊界為總頁數。我們可以驗證一下,圖4.3(b)中,當前頁為8, 8-10= -2,-2小於1,所以左邊界調整為1。8+9=17,17<24(總頁數),所以右邊界仍為17。具體的JavaScript實現代碼如下所示:function showpager(cur,max){ var beindex=cur-10; //假定左邊界 var endindex=cur+9; //假定右邊界 if(beindex<1)beindex=1; //微調 if(endindex>max)endindex=max; if(cur>1)document.write("<a href='Board.aspx?pageno="+(cur-1)+"'>上一頁</a> "); for(i=beindex;i<=endindex;i++){ if(i==cur){ document.write("<strong>"+i+"<strong> "); } else{ document.write("<a href='Board.aspx?pageno="+i+"'>"+i+"</a> "); } } if(cur<max){ document.write("<a href='Board.aspx?pageno="+(cur+1)+"'>下一頁</a>"); }}