显示当前页的留言信息:
使用一个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循环即可。
图示:
出处:蓝色理想
责任编辑:moby
上一页 用户控件设计 下一页
◎进入论坛网络编程版块参加讨论
|