文章作者 : CFANS [ agazhang@eastday.com ] Web URL : http://www.lovease.com
上载日期 : 2001-01-03
我们来看一下制作 上一页 / 下一页 的方法
查询数据库state的内容,假设有50条记录。
<HTML>
<HEAD>
<TITLE>上一页 / 下一页</TITLE>
</HEAD>
<BODY BGCOLOR = "#ffffff">
<CFQUERY DATASOURCE = "gallery" NAME = "list">
SELECT State FROM States
<CFIF IsDefined("Keyword") AND Len(Trim(Keyword))>
WHERE State LIKE '%#Keyword#%'
</CFIF>
ORDER BY State
</CFQUERY>
<!--- 设置每页显示记录数. --->
<CFSET OnEachPage = 8>
<!--- 如果startrow值不存在,设置为1. --->
<!--- 决定什么时候不显示下一页或上一页. --->
<CFPARAM NAME = "StartRow" DEFAULT = "1">
<!--- 设置endrow = maxrows + startrow - 1 --->
<CFSET EndRow = StartRow + OnEachPage - 1>
<!--- 如果最后一条记录数大于等于记录总数,设置Next为假. --->
<CFIF EndRow GTE list.RecordCount>
<CFSET EndRow = list.RecordCount>
<CFSET Next = false>
<!--- 否则, 设置 Next 为真,设置下一页的记录数值. --->
<CFELSE>
<CFSET Next = true>
<CFIF EndRow + OnEachPage GT list.RecordCount>
<CFSET NextNum = list.RecordCount - EndRow>
<CFELSE>
<CFSET NextNum = OnEachPage>
</CFIF>
<CFSET NextStart = EndRow + 1>
</CFIF>
<!--- 如果 StartRow 为 1, 设置 Previous 为假. --->
<CFIF StartRow IS 1>
<CFSET Previous = false>
<!--- 否则, 设置 previous为真. --->
<CFELSE>
<CFSET Previous = true>
<CFSET PreviousStart = StartRow - OnEachPage>
</CFIF>
<!--- 决定有多少页被显示. --->
<CFSET NumPages = Ceiling(list.RecordCount / OnEachPage)>
<CFPARAM NAME = "PageNum" DEFAULT = "1">
当大量记录被显示时,最好采用分页,提供上一页/下一页连接。<P>
这里有一个例子。可按每页显示8条记录。<P>
你也可以查询state(s):<P>
<FORM ACTION = "CFPreviousNext.cfm" METHOD = "post">
<INPUT TYPE = "text" NAME = "Keyword" VALUE = "" SIZE = "15"> <INPUT TYPE = "submit" VALUE = "Search">
</FORM><P>
<CFOUTPUT>
Now displaying records #StartRow# to #EndRow# of #list.RecordCount#.<P>
</CFOUTPUT>
<TABLE BORDER = "0">
<TR>
<TD VALIGN = "top">
<!--- 如果Previous为真,显示上一页连接. --->
<CFIF Previous>
<CFOUTPUT>
<A HREF = "CFPreviousNext.cfm?StartRow=#PreviousStart#&PageNum=#DecrementValue(PageNum)#<CFIF IsDefined("Keyword")>&Keyword=#URLEncodedFormat(Keyword)#</CFIF>"><< 上一页</A>
</CFOUTPUT>
<CFELSE>
</CFIF>
</TD>
<CFLOOP FROM = "1" TO = "#NumPages#" INDEX = "ThisPage">
<CFOUTPUT>
<CFIF ThisPage IS PageNum>
<TD>#ThisPage#</TD>
<CFELSE>
<CFSET PageNumStart = (((ThisPage - 1) * OnEachPage) + 1)>
<TD><A HREF = "CFPreviousNext.cfm?StartRow=#PageNumStart#&PageNum=#ThisPage#<CFIF IsDefined("Keyword")>&Keyword=#URLEncodedFormat(Keyword)#</CFIF>">#ThisPage#</A></TD>
</CFIF>
</CFOUTPUT>
</CFLOOP>
<TD VALIGN = "top">
<!--- 如果Next为真,显示下一页连接. --->
<CFIF Next>
<CFOUTPUT>
<A HREF = "CFPreviousNext.cfm?StartRow=#NextStart#&PageNum=#IncrementValue(PageNum)#<CFIF IsDefined("Keyword")>&Keyword=#URLEncodedFormat(Keyword)#</CFIF>">下一页 >></A>
</CFOUTPUT>
<CFELSE>
</CFIF>
</TD>
</TR>
<TR>
<TD VALIGN = "top" COLSPAN = "<CFOUTPUT>#Evaluate(NumPages + 2)#</CFOUTPUT>">
<CFOUTPUT QUERY = "list" STARTROW = "#startrow#" MAXROWS = "#OnEachPage#">
#State#<BR>
</CFOUTPUT>
</TD>
</TR>
<TR>
</TABLE>
</BODY>
</HTML>
|