ColdfusionMXPageList之骨灰版
你要的功能都在这里,注意是PAGELIST,这是CCF核心代码之一,相信能比我这代码还少的PAGELIST少了.功能绝对没有打折扣.包括 pagelist 首页/末页,上页/下页, 页码可以设置显示数字多少,这避免了数量一多起来把pagelist拉的好长....
在调用PAGELIST的源文件中定义下面这些变量:
cfset rowsperpage=10 !---每页显示记录的数量-----
cfparam name="URL.startrow" default="1" type="numeric"
cfset totalrows=newarticle.Recordcount
cfset endrow=Min(URL.startrow+rowsperpage-1,totalrows)
cfset startRowNext=endrow+1
cfset startrowBack=URL.startrow-rowsperpage
Pagelist代码:可以保持成一个网页,然后插入到你要显示的地方就可以了.把里面的查询变量名修改成你自己的查询变量名就可以了.
cfsetting enablecfoutputonly="Yes" !--- 压缩空白,提高性能 ---
cfparam name="page" default=1 type="numeric" !--- 初始化本页页号 ---
cfparam name="n" default=7 type="numeric" !--- 设置可以显示多少个页 ---
cfset min = page-Int(n/2)
cfset max = page+Int(n/2)
cfif min LT 1
cfset max = max - (min-1)
cfset min = 1
/cfif
cfif max GT Ceiling(newarticle.recordcount/rowsPerPage)
cfset min = min - (max - Ceiling(newarticle.recordcount/rowsPerPage))
cfset max = Ceiling(newarticle.recordcount/rowsPerPage)
/cfif
cfif min lt 1
cfset min=1
/cfif
!-- 首页 first--
cfif page NEQ 1
cfoutput
a href="#CGI.SCRIPT_NAME#?StartRow=1 Page=1" title="首页" /a
/cfoutput
/cfif
!-- 页数 PAGELIST --
cfloop index="x" from="#min#" to="#max#"
cfset nextpage=x*rowsperpage-(rowsperpage-1)
cfoutput
cfif page eq x [#x#] cfelseif nextpage LTE newarticle.recordcount
a href="#CGI.SCRIPT_NAME#?StartRow=#nextpage# Page=#x#" #x# /a
/cfif
/cfoutput
/cfloop
!-- 末页 Last --
cfset laststartrow=newarticle.recordcount-rowsPerPage+1
cfif page NEQ MAX
cfoutput
a href="#CGI.SCRIPT_NAME#?StartRow=#laststartrow# Page=#Ceiling(newarticle.recordcount/rowsPerPage)#" /a
/cfoutput
/cfif
!-- 上一页/下一页 --
cfoutput
CFIF startrowBack GT 0
cfif page EQ 1
CFSET NTback=1
cfelse
cfset NTback=page-1
/cfif
a href="#CGI.SCRIPT_NAME#?startrow=#startrowback# page=#NTback#" 上一页 /a
/CFIF
CFIF startrownext LTE totalrows
cfset NTnext=page+1
a href="#CGI.SCRIPT_NAME#?startrow=#startrownext# page=#NTnext#" 下一页 /a
/CFIF
/cfoutput
cfsetting enablecfoutputonly="no" !--- 别忘记了关闭压缩空白功能 ---
代码拷贝框
以下是引用片段:
cfsetting enablecfoutputonly="Yes" !--- 压缩空白,提高性能 ---
cfparam name="page" default=1 type="numeric" !--- 初始化本页页号 ---
cfparam name="n" default=7 type="numeric" !--- 设置可以显示多少个页 ---
cfset min = page-Int(n/2)
cfset max = page+Int(n/2)
cfif min LT 1
cfset max = max - (min-1)
cfset min = 1
/cfif
cfif max GT Ceiling(newarticle.recordcount/rowsPerPage)
cfset min = min - (max - Ceiling(newarticle.recordcount/rowsPerPage))
cfset max = Ceiling(newarticle.recordcount/rowsPerPage)
/cfif
cfif min lt 1
cfset min=1
/cfif
!-- 首页 first--
cfif page NEQ 1
cfoutput
a href="#CGI.SCRIPT_NAME#?StartRow=1 Page=1" title="首页" /a
/cfoutput
/cfif
!-- 页数 PAGELIST --
cfloop index="x" from="#min#" to="#max#"
cfset nextpage=x*rowsperpage-(rowsperpage-1)
cfoutput
cfif page eq x [#x#] cfelseif nextpage LTE newarticle.recordcount
a href="#CGI.SCRIPT_NAME#?StartRow=#nextpage# Page=#x#" #x# /a
/cfif
/cfoutput
/cfloop
!-- 末页 Last --
cfset laststartrow=newarticle.recordcount-rowsPerPage+1
cfif page NEQ MAX
cfoutput
a href="#CGI.SCRIPT_NAME#?StartRow=#laststartrow# Page=#Ceiling(newarticle.recordcount/rowsPerPage)#" /a
/cfoutput
/cfif
!-- 上一页/下一页 --
cfoutput
CFIF startrowBack GT 0
cfif page EQ 1
CFSET NTback=1
cfelse
cfset NTback=page-1
/cfif
a href="#CGI.SCRIPT_NAME#?startrow=#startrowback# page=#NTback#" 上一页 /a
/CFIF
CFIF startrownext LTE totalrows
cfset NTnext=page+1
a href="#CGI.SCRIPT_NAME#?startrow=#startrownext# page=#NTnext#" 下一页 /a
/CFIF
/cfoutput
cfsetting enablecfoutputonly="no" !--- 别忘记了关闭压缩空白功能 ---
GAME OVER.
说明一下上面没有注释的几段控制语句:
cfparam name="n" default=7 type="numeric"
这里设置默认为7,也就是当你在浏览12条的记录的时候,会显示 9 10 11 [12] 13 14 15
数一下,是不是7条,这是重要的一部分,你也可以设置为双数,但是效果不会怎幺好,不平衡了.
另外上面还有自动隐藏的功能.例如我在最后一页了,不会出现 末页和下一页.
再次提醒一下:你必须把你自己的查询变量名替换newarticle.recordcount这个我设置的变量名.最好用 查找/替换 一次全部换掉.
ColdfusionMXPageList之骨灰版