当前位置: 首页 > 图文教程 > 脚本技术 > ColdFusion > Coldfusion MX PageList之骨灰版

ColdFusion
ColdFusionMX 编程指南 安装教程
ColdFusionMX 编程指南 基础管理操作以及入门程
ColdFusionMX 编程指南 ColdFusionMX编程入门
ColdFusionMX 编程指南 ColdFusionMX Basic Tag编程
ColdFusionMX 编程指南 ColdFusionMX中的循环
Coldfusion MX技巧精华收集(1)
Coldfusion MX技巧精华收集之2
ColdFusion MX 轻松制作 FLASH的方法
Coldfusion MX PageList之骨灰版
Coldfusion MX广告轮换系统制作教程
用Coldfusion生成 OFFICE 文件的代码
Coldfusion MX PageList 菜鸟版教程
ColdfusionMX与FlashMX通讯的方法
收藏的ColdFusionMX应用技巧及问题集
ColdFusion与FLASH通信轻松入门教程
ColdFusion MX 远程服务实例入门教程

ColdFusion 中的 Coldfusion MX PageList之骨灰版


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 136 ::
收藏到网摘: n/a

你要的功能都在这里,注意是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这个我设置的变量名.最好用 查找/替换 一次全部换掉.