设为首页
收藏本站
最近更新

文章搜索
本类热门

首页 >> 网络编程 >> ASP.NET >> ASP.NET实例 >> 新闻正文 [字体: ] [打印文档]
ASP.NET高级教程—显示留言,分页

文章作者:
责任编辑:rosan 录入时间:2007-6-15 9:16:02 来源:
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意.

百特科技[http://www.PCbyte.cn]专业的空间、主机提供商,域名注册绝对优惠!

显示当前页的留言信息:

使用一个asp:repeater控件显示信息,我没有使用dataset 的分页是因为那样很浪费资源,每次把全部数据都读取的说,我是只读当page页面数据的:index.aspx

 dim PAGENO as integer
 dim pagestr as string = request.QueryString("page")
 if not  IsNumeric(pagestr)  then
  PAGENO = 1
 else
  PAGENO =   int32.parse(Microsoft.VisualBasic.Left(pagestr, 10))
 end if
 dim PAGELIST AS integer = 6 '每页的信息条数

为了防止page参数的非法性,我们做了一点额外的工作:转换类型到int32合法。

然后读取当页信息:

 rpt_postlist.datasource = CoutData.CoutGuestData(PAGENO,PAGELIST ) '这里返回了dataset对象
 rpt_postlist.databind()

其中CoutData::CoutGuestData也是共享方法:

'返回计数,
 shared Function CoutGuestData (pagei as integer,optional PAGESIZE as integer = 6 ) as DataSet
  dim PAGENO as integer = pagei
  dim STARTNO as integer = PAGESIZE *( PAGENO-1 )      '得到开始的记录
  dim SQLSTR  as string

  SQLSTR = "select top "& PAGESIZE &" [book_id],[user_name],[book_title], [book_contents],[book_type],[book_time] from [szd_book] "
  if PAGENO <> 1 then
   SQLSTR &= "where [book_id] not in( select top "& STARTNO &" [book_id]  from [szd_book] order by [book_id] desc) " 
  end if
  SQLSTR &=  " order by [book_id] desc"
  Dim conn as New conn()
  return conn.GetDataSet(SQLSTR)
 End Function

 shared Function CoutBbcode (ByRef strs as string ,Optional htmlorubb as integer  = 0 ) as string
  if htmlorubb = 0  then
   return CjjerBase.bbCode.GetBbcode(strs)
  else
   return strs
  End if
 End Function

这个方法比较简单,思路就是根据当前页计算记录的开始条 + 每页数,出现意外及时变换sql,然后读取数据库,返回dataset。

图示:

显示当前的分页信息:

 pageinfo.text = CoutData.CoutPageLabel( PAGENO ,PAGELIST)

CoutData::CoutPageLabel

 Shared Function  CoutPageLabel( pagenoi as integer ,optional PAGESIZE as integer = 6 )  as string
  dim PAGENO as integer
  dim pagestr as string = pagenoi 
  PAGENO =   int32.parse(Microsoft.VisualBasic.Left(pagestr, 10))
  dim ALLNO as integer 
  dim RECORDSESQL as string = " select count([book_id]) from [szd_book]"
  Dim conn as New conn()
  ALLNO = conn.ExecuteScalar(RECORDSESQL)
  conn.close()
  dim STARTNO as integer = PAGESIZE *( PAGENO-1 )      '得到开始的记录
  dim COUNTPAGE AS integer = CInt (  ALLNO / PAGESIZE  + 0.5 )  '得到总页数
  
  if ( ALLNO mod PAGESIZE ) = 0 then  COUNTPAGE -= 1
  dim PAGESTRS AS string
  if PAGENO > COUNTPAGE then  PAGENO = COUNTPAGE
  PAGESTRS = "总数:" & ALLNO & "页数:" & COUNTPAGE & ",当前第" & PAGENO & "页,"
  dim pageI as integer
  for pageI = 1 to COUNTPAGE
   if pageI = PAGENO
    PAGESTRS &=   pageI   
   else
    PAGESTRS &= "<a href=""index.aspx?page=" & pageI & """> " & pageI & " </a>"
   end if
  next
  return  PAGESTRS
 End Function

思路就是:先获取总数,规划根据总数和每页的信息数目for循环即可。

图示:

此新闻共有2页 上一页 1 2 下一页

推荐好友 | 频道收藏 | 打印文档 | 报告错误  
相关连接
·[.net]windows控件实现水印
·ASP.NET高级教程—显示留言,分页
·ASP.NET高级教程—用户控件设计
·ASP.NET高级教程—基类设计
·ASP.NET高级教程—程序之规划篇
·ASP.NET高级教程—实战篇
·ASP.NET2.0里的配置接口API
·根据身份证判断性别和生日
同一专题
·无相关专题
发表评论 版权声明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有
转载
要求转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
共有评论查看评论
姓名: