我用ASP寫的m行n列的函數,動態輸出建立TABLE行列

來源:互聯網
上載者:User

沒有用正常的迴圈tr內迴圈td的方法,所以就沒有計算最後一頁的記錄集數量。
但當記錄集不足時也同樣能夠自動補空行空列,如有不足請指出,謝謝。
使用方法很簡單:

複製代碼 代碼如下:<%
showData("查詢語名")
Call pagehead(行數,列數)
'-------------------------------------------------------------------------------
'可以把下面的Response.Write()寫到函數裡面,看個人的愛好了。
Response.Write(FormatCRtable(表格寬度,表格高度))
Response.Write(PageFoot())
Call closeData()
%>

函數如下:

複製代碼 代碼如下:<%
'-------------------------------------------------------------------------------
'Copyright 2005 by Jorkin.All Rights Reserved
'-------------------------------------------------------------------------------
Public rs
Public pageno,Cols,Rows,maxpageno,maxredcount,maxpagesize
'-------------------------------------------------------------------------------
Public Function showData(sqlstrings)
  Set rs=Server.CreateObject("ADODB.Recordset")
  rs.open sqlstrings,oconn,1,3
End Function
Public Function closeData()
  rs.close
  Set rs=Nothing
End Function
'初始化分頁
'MaxRows =最大行數
'MaxCols =最大列數
'-------------------------------------------------------------------------------
Public Function PageHead(MaxRows,MaxCols)
'-------------------------------------------------------------------------------
  Rows=MaxRows
  Cols=MaxCols
  maxpagesize=1
  maxredcount=0
  maxpageno=0
  pageno=0
'-------------------------------------------------------------------------------
  maxredcount = rs.recordcount
  If maxredcount>0 then
  maxpagesize = Rows*Cols
  maxpageno = Cint((maxredcount+maxpagesize-1)/maxpagesize)
  rs.pagesize = maxpagesize
  pageno=Request("pageno")
  If IsEmpty(pageno) Or Not IsNumeric(pageno) Or CInt(pageno)<1 Or CInt(pageno)>Rs.Pagecount Then
   Pageno=1
  End If
  rs.absolutePage=pageno
  End If
  On Error Resume Next
End Function
'分頁函數尾
'無參數
'-------------------------------------------------------------------------------
Public Function PageFoot()
  strr="<table width=""500"" border=""0"" cellpadding=""0"" cellspacing=""0"">" & VbCrLf
  strr=strr&" <tr>" & VbCrLf
  strr=strr&" <td valign=""top""><div align=""Right"">"
'大於1頁才會顯示首頁和上一頁(可選)
' If pageno>1 Then
   strr=strr&"<a href=""?pageno=1"" title=""首頁""><font face = Webdings>9</font></a>"
   strr=strr&" "
   strr=strr&"<a href=""?pageno="&pageno-1&""" title=""上一頁""><font face = Webdings>7</font></a>"
' End If
  strr=strr&" "&pageno&" "
'小於最大頁數才會顯示下一頁和尾頁(可選)
' If pageno<maxpageno Then
   strr=strr&"<a href=""?pageno="&pageno+1&""" title=""下一頁""><font face = Webdings>8</font></a>"
   strr=strr&" "
   strr=strr&"<a href=""?pageno="&maxpageno&""" title=""""><font face = Webdings>:</font></a>"
' End If
  strr=strr&" "
  strr=strr&(pageno-1)*maxpagesize+1&"/"&maxredcount&"條記錄"
  strr=strr&" "
  strr=strr&pageno&"/"&maxpageno&"頁"
  strr=strr&"</div></td>" & VbCrLf
  strr=strr&" </tr>" & vbCrLf
  strr=strr&"</table>"
  PageFoot=strr
End Function
'進行行列格式化函數
'TableWidth =表格寬度
'TableHeight =表格高度(因瀏覽器不同可能無效)
'-------------------------------------------------------------------------------
Public Function FormatCRtable(TableWidth,TableHeight)
  Dim i,strr
  i=0
  strr=""
  strr=strr&"<table width="""&TableWidth&""" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLf
  strr=strr&" <tr>" & VbCrLf
  If maxredcount>0 Then
   Do While i<maxpagesize
   i=i+1
   If Not Rs.eof Then
   strr=strr&" <td width="""&TableWidth/Cols&""" height="""&Tableheight/Rows&""">有記錄則進行輸出</td>" & vbCrLf
   Rs.movenext
   Else
   strr=strr&" <td width="""&TableWidth/Cols&""" height="""&Tableheight/Rows&""">記錄集不足時補餘</td>" & VbCrLf
   End If
   If i Mod Cols = 0 Then
   strr=strr&" </tr>" & VbCrLf
   strr=strr&" <tr>" & vbCrLf
   End If
   Loop
  Else
   strr=strr&"<td height="""&TableWidth&""" valign=""top"">目前沒有記錄集</td>"
  End if
  strr=strr&" </tr>" & VbCrLf
  strr=strr&"</table>" & VbCrLf
  FormatCRtable=strr
End Function
%>

代碼還有很多不足,而且寫的也不是很嚴謹,見笑了。
以後可以會改為Class
轉自:http://jorkin.reallydo.com/article.asp?id=15

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.