;中国 COLD FUSION 用户组; WWW.CFWINDOW.COM 
您的位置 :首页 >> CF 技巧文章 >> 阅读文章内容 [ 关闭窗口 ]      

技巧文章内容 
    上一页/下一页的制作
文章作者 : 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>







< 联系我们 --- 中国Cold Fusion用户组>

CFUG 国内(总部):Linkfoxo    上海:CFANS    北京:Cafe,Cyberkid,liwater    沈阳:Wangking
  
哈尔滨:Baiming    浙江:梅盛松    江西:陈末
  
CFUG (国际) Nagoya(名古屋):Codeguru    新加坡:YUZI    新西兰(Auckland):Richard CHEN
Copyright 2000-2001 www.cfwindow.com.All rights reserved

;中国 COLD FUSION 用户组; WWW.CFWINDOW.COM