欢迎光临
我们一直在努力

ASP中正则表达式的应用(二)

建站超值云服务器,限时71元/月

  五、总结
  上面我们介绍了正则表达式的基本概念,以及在vbscript和javascript中如何使用正则表达式,同时,通过一些实例让大家有了感性的认识。正则表达式的应用范围很广,能为大家解决很多实际中的问题。本文介绍的内容只是一些初步的知识,还有很多语法规则需要大家继续学习,在实践中发现问题,解决问题。 返回顶部

             怎么实现数据记录的分页显示(作者:darkman)

怎么实现数据记录的分页显示 (1)

       通过recordset的getrows方法,可以实现数据记录的分页显示。下面是一个完整的例子:
<%@ language = vbscript %>
<% option explicit %>
<%
  dim istart, ioffset
  istart = request("start")
  ioffset = request("offset")

  if not isnumeric(istart) or len(istart) = 0 then
      istart = 0
  else
      istart = cint(istart)
  end if

  if not isnumeric(ioffset) or len(ioffset) = 0 then
      ioffset = 10
  else
      ioffset = cint(ioffset)
  end if

  response.write "察看 " & ioffset & " 个记录从 " & istart & "开始 <br>"

  dim objconn, objrs
  set objconn = server.createobject("adodb.connection")
  objconn.open "provider=sqloledb.1;data source=(local);uid=sa;pwd=;initial    catalog=pubs"

  set objrs = server.createobject("adodb.recordset")
  objrs.open "select * from authors", objconn

  dim aresults
  aresults = objrs.getrows

  objrs.close
  set objrs = nothing

  objconn.close
  set objconn = nothing

  dim irows, icols, irowloop, icolloop, istop
  irows = ubound(aresults, 2)
  icols = ubound(aresults, 1)

  if irows > (ioffset + istart) then
      istop = ioffset + istart – 1
  else
      istop = irows
  end if

  for irowloop = istart to istop
      for icolloop = 0 to icols
       response.write aresults(icolloop, irowloop) & " "
     next
      response.write "<br>"
   next  

  response.write "<p>"
  if istart > 0 then
    显示“前 10个”连接
      response.write "<a href=""paging.asp?start=" & istart-ioffset & _
                    "&offset=" & ioffset & """>前 " & ioffset & "</a>"
   end if

  if istop < irows then
    显示“后 10个”连接
     response.write " <a href=""paging.asp?start=" & istart+ioffset & _
                     "&offset=" & ioffset & """>后 " & ioffset & "</a>"
  end if
%>

怎么实现数据的分页显示(2)
这里介绍另外一种分页显示的方法,是通过 ms sql的存储过程。本方法不适用于access数据库。
假设我们要对数据表mytable的数据实现分页显示,首先写一个存储过程 如下:
create procedure sp_pageditems
        (
          @page int,
          @recsperpage int
         )
  as

  – 加快表的 插入速度
  set nocount on

  – 开始记录 号
  declare @reccount int
  select @reccount = @recsperpage * @page + 1

  –创建临时 表
  create table #tempitems
  (
         id int identity,
         name varchar(50),
         price currency
 )

  – 准备临时 表
  insert into #tempitems (name, price)
         select name,price from mytable order by price

  – 求出要查 询的最小id和最大id
  declare @firstrec int, @lastrec int
  select @firstrec = (@page – 1) * @recsperpage
  select @lastrec = (@page * @recsperpage + 1)

  – 得到实际 的记录,并返回是否还有数据!
  select *,
         morerecords =
        (
          select count(*)
          from #tempitems ti
          where ti.id >= @lastrec
        )
  from #tempitems
  where id > @firstrec and id < @lastrec

  – 恢复设置
  set nocount off

  在这个存储过程里,我们首先创建一个全部 记录的临时表,并增加了一个自动编号的字段id。这样,不同的记录就有一个递增的唯一标志。
  根据当前的页号和每页的记录数,可以计算 出每页的最小和最大的id。从而得到当前页的所有记录。
  为了显示的方便,存储过程还计算了 morerecords字段,作为显示下一页的判断条件。
  利用了这个存储过程的程序代码如下:
 <%
         每页显示10条
         const irecordsperpage = 10

         dim currentpage    当前页号
         dim bollastpage    在最后一页?
         
        if len(request.querystring("page")) = 0 then
                currentpage = 1
        else
                currentpage = cint(request.querystring("page"))
        end if

         得到当前页的记录
         strsql = "sp_pageditems " & currentpage & "," & irecordsperpage
         objrs.open strsql, objconn
         
         判断是否在最后一页
        if not objrs.eof then
                if cint(objrs("morerecords")) > 0 then
                        bollastpage = false
                else
                        bollastpage = true
                end if
         end if
  %>
  <p>

 <table border=0 cellspacing=1 cellpadding=4 align=center>
  <tr><th colspan=2 bgcolor=navy>
         <font size=+1 color=white>
                 list of items
         </font>
  </th></tr>
 <%
         do while not objrs.eof %>
                <tr><td align=left bgcolor=gray>
                       <%=objrs("name")%>
                </td><td align=center bgcolor=gray>
                       <%=formatcurrency(objrs("price"))%>
                </td></tr>
  <%         objrs.movenext
         loop %>
 </table>
  <p>
  <center>
 <%

  第一页不 显示“前一页”
 if currentpage > 1 then %>
         <input type=button value="<< 前 <%=imaxrecords%> 记录 "
         onclick="document.location.href=thispage.asp?page=<%=currentpage-1%>"> ;
              
 <% end if

  最后一页 不显示“后一页”
 if not bollastpage then %>
         <input type=button value="后 <%=imaxrecords%> 记录 >>"
         onclick="document.location.href=thispage.asp?page=<%=currentpage+1%>"> ;
 <% end if %>
  </center>                                          

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP中正则表达式的应用(二)
分享到: 更多 (0)

相关推荐

  • 暂无文章