樓主

Lak

發送站內信
|
在利用ASP和DB連動的時後,常常需要使用到分頁的功能, 而每次在使用分頁都要重新去撰寫一個分頁程式實在是一件很沒效率的事情, 所以我就寫了下面這個分頁模組,只需要丟給它 RS 物件,Connect 物件,及SQL式, 它就會將分頁的連結完成,由於Call by Reference 的特性, RS 物件也會開好吐回來給你。
基本上的使用方式,就是將這個模組,當成 RS.open 來用,因為模組會幫你把 RS 順便開起來, 下面就是完整的程式碼。
使用方式: result=DB_PageShow(conn, rs, SQL) ;
所以你可以很容易的把這個模組套入你的程式中,只需要在 rs.open 的地方換成這一行就可以了。
result[0] <-- 做完的連結,只需要在你要 show 出來的地方 response.write(reslut[0]) 便完成 result[1] <-- 目前在那一頁,提供程式設計者使用,也許用得到。
<Script Language='JavaScript' runat='Server'> DB_PageSz = 10 ; DB_List = 10 ; DB_TimOut = 600 ;
function DB_PageShow(Conn, rs, SQL) { var PageCnt = Request("PG_CNT") ; var result = new Array(2); Conn.CommandTimeout = DB_TimOut ; //rs = Server.CreateObject("ADODB.RECORDSET") ; if (rs.state == 1) rs.close ; rs.Open(SQL, Conn, 3, 1) ; if (!rs.EOF) { rs.pagesize = DB_PageSz ; if (PageCnt > rs.pagecount) PageCnt = rs.pagecount ; if (PageCnt == "" || isNaN(PageCnt) ) { PageCnt = 1 ; rs.absolutepage = PageCnt ; } else rs.absolutepage = PageCnt ; //result[]=rs ; result[0]=nPage_Ctrl(rs, PageCnt) ; result[1]=PageCnt ; } else { result[0]="" ; } return result ; }
function nPage_Ctrl(rs, PageCnt) { // pFlag : 01(b)=有前區段 ,10(b)=有後區段 var i=0, j=0,nSemg=0, pFlag=0 ; var OutPut=""; PageCnt=parseInt(PageCnt, 10) ; // 取得區段 nSemg = Math.floor((PageCnt-1)/DB_List) ; //response.write(PageCnt) ; // 設定該區段起始頁及結束頁 if (nSemg>0) { pStr = nSemg*DB_List+1 ; pFlag+=1; } else pStr = 1 ; pEnd = (nSemg+1)*DB_List ; if (pEnd>rs.pagecount) pEnd = rs.pagecount ; else pFlag+=2 ; if (pFlag&1) OutPut+="<a href='' onClick='JavaScript:JumpPage("+ (PageCnt-DB_List)+ ");window.event.returnValue=false;'>-"+DB_List+"</a> " ; if (PageCnt!=1) OutPut+="<a href='' onClick='JavaScript:JumpPage("+ (PageCnt-1)+ ");window.event.returnValue=false;'><font face=webdings>3</font></a> " ; for (i=pStr;i<=pEnd;i++) { if (i==PageCnt) OutPut+="<font color=black>"+ (i) + "</font> " ; else OutPut+="<a href='' onClick='JavaScript:JumpPage("+ i+ ");window.event.returnValue=false;'>"+i+"</a> " ; } if (PageCnt!=rs.pagecount) OutPut+="<a href='' onClick='JavaScript:JumpPage("+ (PageCnt+1)+ ");window.event.returnValue=false;'><font face=webdings>4</font></a> " ; if (pFlag&2) OutPut+="<a href='' onClick='JavaScript:JumpPage("+ (PageCnt+DB_List)+ ");window.event.returnValue=false;'>+"+DB_List+"</a> " ;
return OutPut ; }
</Script>
<Script Language='VBScript' runat='Server'> function VB_DB_PageShow(conn, rs, SQL) Dim temp, result temp = DB_PageShow(conn, rs, SQL).join(", ") resutlt = Split(temp, ", ") VB_DB_PageShow = result end function </Script>
<Script Language='JavaScript'>
function JumpPage(i) { var PCT ; PCT=document.createElement("input") ; PCT.id="PG_CNT" ; PCT.name="PG_CNT" ; PCT.type="hidden" ; PCT.value=i ; // 有空改成直接用 window.event.srcElement 找父物件,直到找到 form 為止 document.getElementsByTagName('form')[0].appendChild(PCT) ; document.getElementsByTagName('form')[0].action="<%=Request.ServerVariables("script_name")%>" ; document.getElementsByTagName('form')[0].submit() ; } </Script>
== 簽名檔 ==
By Lak Web Site: Lak4CYUT.blogspot.com
|