台灣最大程式設計社群網站
線上人數
657
 
會員總數:245215
討論主題:189089
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> ASP資料庫分頁連結產生模組
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ASP資料庫分頁連結產生模組
價值 : 0 QP  點閱數:926 回應數:0

樓主

Lak
初級專家
1744 27
2116 739
發送站內信

捐贈 VP 給 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>


搜尋相關Tags的文章: [ ASP ] , [ 分頁 ] , [ 資料庫 ] ,
本篇文章發表於2008-06-14 19:59
== 簽名檔 ==
By Lak
Web Site: Lak4CYUT.blogspot.com
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.