分页的解析处理(ASP)

原创 2004年08月03日 15:37:00

<%@ Language = VBScript %>
<% Option Explicit %>
<script language="javascript">
function fPageClick(pageno){
 var url = ''
 url = 'page.asp' +
  '?crtpage=' + pageno
  document.location.replace(url);
}
</script>
<%
Const GSTR_DIS_FVLH_TTL_BACK  = "<<前へ"
Const GSTR_DIS_FVLH_TTL_FWRD  = "次へ>>"
'==========================================================
'機能 : 表示用ページ番号解析処理
'引数 : なし
'      total  IN 全ページ数
'      current  IN カレントのページ
'      dispnum  IN 中央表示ページ数 ※ 奇数
'      amari  IN 余りページ表示数 指定数に大体近い数が採用される
'      aryPagesL OUT 左ページ番号の配列
'      aryPagesM OUT 中央ページ番号の配列
'      aryPagesR OUT 右ページ番号の配列
'      jmpL  OUT 左ジャンプ数
'      jmpR  OUT 右ジャンプ数
'返却値 : なし
'==========================================================
Function fblnGetArrayOfManyPages(ByVal total, ByVal current, ByVal dispnum, ByVal amari, ByRef aryPagesL, ByRef aryPagesM, ByRef aryPagesR, ByRef jmpL, ByRef jmpR)


 Dim currentL, currentR 'カレント5件の左右のページ番号
 Dim lenL, lenR   'カレント左右の残り件数
 Dim sepL, sepR   '左右のジャンプ間隔
 Dim viewL, viewR  '左右の実表示個数

 fblnGetArrayOfManyPages = False

 If current > total Or current < 1 Then Exit Function
 If total <= 0      Then Exit Function
 If dispnum <= 0      Then Exit Function
 If dispnum / 2 = Int(dispnum / 2) Then Exit Function
 If amari <= 0      Then Exit Function

 currentL = current - Int(dispnum / 2)
 If currentL <= 2 Then
  currentL = 1
  currentR = dispnum
 Else
  currentR = current + Int(dispnum / 2)
  If currentR >= total - 3 Then
   currentL = total - dispnum
   currentR = total
  End If
 End If

 If total <= dispnum Then
  currentL = 1
  currentR = total
 End If

 lenL = currentL - 1
 lenR = total - currentR

 If lenL <= 0 Then
  viewL = 1
 Else
  viewL = Round(amari * lenL / (lenL +lenR), 0)
 End If

 If lenR <= 0 Then
  viewR = total
 Else
  viewR = Round(amari * lenR / (lenL +lenR), 0)
 End If

 sepL = 0
 sepR = 0

 If viewL > 0 Then
  sepL = Round(LenL / viewL, 0)
  If sepL < 1 Then sepL = 1
 End If

 If viewR > 0 Then
  sepR = Round(LenR / viewR, 0)
  If sepR < 1 Then sepR = 1
 End If

 'ページ配列の生成

 Dim intPagesL, intPagesM, intPagesR
 Dim i

 intPagesL = 0
 If sepL > 0 Then
  For i = 1 To currentL Step sepL
   If i >= currentL Then Exit For
   If Not IsArray(aryPagesL) Then aryPagesL = Array(-1)
   ReDim Preserve aryPagesL(intPagesL)
   aryPagesL(intPagesL) = i
   intPagesL = intPagesL + 1
  Next
 Else
  If currentL > 1 Then
   If Not IsArray(aryPagesL) Then aryPagesL = Array(-1)
   ReDim Preserve aryPagesL(intPagesL)
   aryPagesL(intPagesL) = 1
  End If
 End If

 intPagesM = 0
 For i = currentL To currentR
  If Not IsArray(aryPagesM) Then aryPagesM = Array(-1)
  ReDim Preserve aryPagesM(intPagesM)
  aryPagesM(intPagesM) = i
  intPagesM = intPagesM + 1
 Next

 If total > currentR  Then
  intPagesR = 0
  If sepR > 0 Then
   For i = currentR + sepR To total Step sepR
    If i >= total Then
'     If intPagesR > 0 Then
'      intPagesR = intPagesR - 1
'     End If
     Exit For
    End If
    If Not IsArray(aryPagesR) Then aryPagesR = Array(-1)
    ReDim Preserve aryPagesR(intPagesR)
    aryPagesR(intPagesR) = i
    intPagesR = intPagesR + 1
   Next
  End If
  If Not IsArray(aryPagesR) Then aryPagesR = Array(-1)
  ReDim Preserve aryPagesR(intPagesR)
  aryPagesR(intPagesR) = total
 End If

 jmpL = sepL
 jmpR = sepR

 fblnGetArrayOfManyPages = True
End Function


Function fGetPageHTML(strHTML,totalPage,currentPage,dispnum,amari)

 Dim aryPagesL, aryPagesM, aryPagesR, jmpL, jmpR, i, intTempPage
 
   'If fblnGetArrayOfManyPages(lngPageNumber, lngCurentPage, 5, 6, aryPagesL, aryPagesM, aryPagesR, jmpL, jmpR) Then
   If fblnGetArrayOfManyPages(totalPage, currentPage, dispnum, amari, aryPagesL, aryPagesM, aryPagesR, jmpL, jmpR) Then
    Dim strDisp, strDelmiL, strDelmiR

    If currentPage = 1 Then
     strHTML = strHTML & GSTR_DIS_FVLH_TTL_BACK & "&nbsp;"
    Else
     strHTML = strHTML & "<a href=javascript:fPageClick("  & currentPage-1 & ")>" & GSTR_DIS_FVLH_TTL_BACK & "</a>&nbsp;"
    End If

    
    '## 実ページ番号の表示部分
    strDelmiL = "&hellip;"
    strDelmiR = "&hellip;"

    If jmpL <= 1 Then
     strDelmiL = "&nbsp;"
    End If
    If jmpR <= 1 Then
     strDelmiR = "&nbsp;"
    End If

    If IsArray(aryPagesL) Then
     intTempPage = CInt(-100)
     For i = 0 To UBound(aryPagesL)
      If (intTempPage + 1) < CInt(aryPagesL(i)) Then
       strHTML = strHTML & "<a href=javascript:fPageClick("  & CStr(aryPagesL(i)) & ")>" & CStr(aryPagesL(i)) & "</a>" & strDelmiL
       intTempPage = CInt(aryPagesL(i))
      End If
     Next
    End If

    If IsArray(aryPagesM) Then
     For i = 0 To UBound(aryPagesM)
      If Int(aryPagesM(i)) = Int(currentPage) Then
       strHTML = strHTML & "<b>[" & CStr(aryPagesM(i)) & "]</b>"
      Else
       strHTML = strHTML & "<a href=javascript:fPageClick("  & CStr(aryPagesM(i)) & ")>" & CStr(aryPagesM(i)) & "</a>"
      End If
      If i <> UBound(aryPagesM) Then
       strHTML = strHTML & "&nbsp;"
      End If
     Next
    End If

    If IsArray(aryPagesR) Then
     Dim strHTMLWork : strHTMLWork = ""
     intTempPage = CInt(aryPagesR(UBound(aryPagesR))) + 100
     For i = UBound(aryPagesR) To 0 Step -1
      If (intTempPage - 1) > CInt(aryPagesR(i)) Then
       strHTMLWork = strDelmiR & "<a href=javascript:fPageClick("  & CStr(aryPagesR(i)) & ")>" & CStr(aryPagesR(i)) & "</a>" & strHTMLWork
       intTempPage = CInt(aryPagesR(i))
      End If
     Next
     strHTML = strHTML & strHTMLWork
    End If

    '## 「次へ>>」の表示部分
    If Int(currentPage) = Int(currentPage) Then
     strHTML = strHTML & "&nbsp;" & GSTR_DIS_FVLH_TTL_FWRD & "</td>"
    Else
     strHTML = strHTML & "&nbsp;<a href=javascript:fPageClick("  & currentPage+1 & ")>" & GSTR_DIS_FVLH_TTL_FWRD & "</a></td>"
    End If
   Else
    strHTML = strHTML & ""
   End If
End Function

 

Dim lngCurentPage
Dim strHTML
Dim blnRet

If Request.QueryString("crtpage")<>"" Then
 lngCurentPage = CLng(Request.QueryString("crtpage"))
Else
 lngCurentPage = 1
End If
blnRet = fGetPageHTML(strHTML,1000,lngCurentPage,5,6)
response.write(strHTML)
%>

asp通过json调用webservice接口,并获取返回的xml数据及解析

本事例是asp调用webservice接口,并获取返回的xml数据及解析! Response.Write "测试时间:"&now()&"" dim url,SOAP...
  • kuyz1
  • kuyz1
  • 2017年01月17日 17:26
  • 1256

Asp 解析 XML并分页显示

Asp 解析 XML并分页显示
  • yimiyuangguang
  • yimiyuangguang
  • 2014年05月14日 01:10
  • 1492

Python之HTML的解析(网页抓取一)

对html的解析是网页抓取的基础,分析抓取的结果找到自己想要的内容或标签以达到抓取的目的。        HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、...
  • my2010Sam
  • my2010Sam
  • 2013年11月08日 20:32
  • 28544

ASP.NET 2.0数据处理之高级分页与排序

GridView控件中的"选择"操作纯粹是一个UI概念,它的SelectedIndex属性与表格的可视数据行中的当前被选中的行的索引相对应。如果你启用了表格的分页和排序功能,在执行分页或排序操作之后,...
  • huangshunle
  • huangshunle
  • 2011年11月24日 07:57
  • 275

Asp.net登陆(分页)字符串和异常处理功能模块

  • 2008年08月04日 16:32
  • 7KB
  • 下载

ASP.NET中Repeater控件实现分页功能

Repeater轻量级,完全的自定义 Repeater分页,需要依靠PagedDataSource。这个类存在于System.Web.UI.WebControls命名空间。它的作用是作为数据源与数据...
  • qin_zhangyongheng
  • qin_zhangyongheng
  • 2012年08月02日 15:43
  • 13174

asp.net中Ajax分页实例

一 .ashx代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; usin...
  • cnceohjm
  • cnceohjm
  • 2013年06月12日 17:15
  • 585

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)

上篇博客我只是将界面的部分完成了,继续上篇博客的内容,这篇博客我们需要将数据库中的记录显示到界面上,并实现数据的分页显示。 曾经我写过分页的博客,分页很简单, 本质区别在于分页时从数据...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014年02月27日 11:21
  • 35907

Asp.NET MVC X.PageList.MVC 分页详解以及自定义样式

最近在研究MVC,自己做了个小项目;其中用到了分页功能,在网上找了很多相关的第三方插件,最后选择了X.PageList.MVC,插件是开源的,有利于学习所以选择了它,这并不是说其它的分页插件不好,只是...
  • tuchangsheng801004
  • tuchangsheng801004
  • 2015年08月07日 16:20
  • 4114

ASP.NET+Ajax+JQuey+Json数据+存储过程实现无刷新分页

var pageIndex=1; //当前页码 var totalPage; //总页数 $(function () { $.ajax({ ur...
  • LMAOhuaNL
  • LMAOhuaNL
  • 2011年08月24日 16:43
  • 3043
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分页的解析处理(ASP)
举报原因:
原因补充:

(最多只允许输入30个字)