你要的功能都在这里,注意是PAGELIST,这是CCF核心代码之一,相信能比我这代码还少的PAGELIST少了.功能绝对没有打折扣.包括pagelist首页/末页,上页/下页,页码可以设置显示数字多少,这避免了数量一多起来把pagelist拉的好长....
在调用PAGELIST的源文件中定义下面这些变量:
<cfsetrowsperpage=10><--->
<cfparamname="URL.startrow"default="1"type="numeric">
<cfsettotalrows=newarticle.Recordcount>
<cfsetendrow=Min(URL.startrow+rowsperpage-1,totalrows)>
<cfsetstartRowNext=endrow+1>
<cfsetstartrowBack=URL.startrow-rowsperpage>
Pagelist代码:可以保持成一个网页,然后插入到你要显示的地方就可以了.把里面的查询变量名修改成你自己的查询变量名就可以了.
<cfsettingenablecfoutputonly="Yes"><->
<cfparamname="page"default=1type="numeric"><->
<cfparamname="n"default=7type="numeric"><->
<cfsetmin=page-Int(n/2)>
<cfsetmax=page+Int(n/2)>
<cfifminLT1>
<cfsetmax=max-(min-1)>
<cfsetmin=1>
</cfif>
<cfifmaxGTCeiling(newarticle.recordcount/rowsPerPage)>
<cfsetmin=min-(max-Ceiling(newarticle.recordcount/rowsPerPage))>
<cfsetmax=Ceiling(newarticle.recordcount/rowsPerPage)>
</cfif>
<cfifminlt1>
<cfsetmin=1>
</cfif>
<>
<cfifpageNEQ1>
<cfoutput>
<ahref="#CGI.SCRIPT_NAME#?StartRow=1&Page=1"title="首页"><<</a>
</cfoutput>
</cfif>
<>
<cfloopindex="x"from="#min#"to="#max#">
<cfsetnextpage=x*rowsperpage-(rowsperpage-1)>
<cfoutput>
<cfifpageeqx>[#x#]<cfelseifnextpageLTEnewarticle.recordcount>
<ahref="#CGI.SCRIPT_NAME#?StartRow=#nextpage#&Page=#x#">#x#</a>
</cfif>
</cfoutput>
</cfloop>
<>
<cfsetlaststartrow=newarticle.recordcount-rowsPerPage+1>
<cfifpageNEQMAX>
<cfoutput>
<ahref="#CGI.SCRIPT_NAME#?StartRow=#laststartrow#&Page=#Ceiling(newarticle.recordcount/rowsPerPage)#">>></a>
</cfoutput>
</cfif>
<>
<cfoutput>
<CFIFstartrowBackGT0>
<cfifpageEQ1>
<CFSETNTback=1>
<cfelse>
<cfsetNTback=page-1>
</cfif>
<ahref="#CGI.SCRIPT_NAME#?startrow=#startrowback#&page=#NTback#">上一页</a>
</CFIF>
<CFIFstartrownextLTEtotalrows>
<cfsetNTnext=page+1>
<ahref="#CGI.SCRIPT_NAME#?startrow=#startrownext#&page=#NTnext#">下一页</a>
</CFIF>
</cfoutput>
<cfsettingenablecfoutputonly="no"><->
代码拷贝框
以下是引用片段:
<cfsettingenablecfoutputonly="Yes"><->
<cfparamname="page"default=1type="numeric"><->
<cfparamname="n"default=7type="numeric"><->
<cfsetmin=page-Int(n/2)>
<cfsetmax=page+Int(n/2)>
<cfifminLT1>
<cfsetmax=max-(min-1)>
<cfsetmin=1>
</cfif>
<cfifmaxGTCeiling(newarticle.recordcount/rowsPerPage)>
<cfsetmin=min-(max-Ceiling(newarticle.recordcount/rowsPerPage))>
<cfsetmax=Ceiling(newarticle.recordcount/rowsPerPage)>
</cfif>
<cfifminlt1>
<cfsetmin=1>
</cfif>
<>
<cfifpageNEQ1>
<cfoutput>
<ahref="#CGI.SCRIPT_NAME#?StartRow=1&Page=1"title="首页"><<</a>
</cfoutput>
</cfif>
<>
<cfloopindex="x"from="#min#"to="#max#">
<cfsetnextpage=x*rowsperpage-(rowsperpage-1)>
<cfoutput>
<cfifpageeqx>[#x#]<cfelseifnextpageLTEnewarticle.recordcount>
<ahref="#CGI.SCRIPT_NAME#?StartRow=#nextpage#&Page=#x#">#x#</a>
</cfif>
</cfoutput>
</cfloop>
<>
<cfsetlaststartrow=newarticle.recordcount-rowsPerPage+1>
<cfifpageNEQMAX>
<cfoutput>
<ahref="#CGI.SCRIPT_NAME#?StartRow=#laststartrow#&Page=#Ceiling(newarticle.recordcount/rowsPerPage)#">>></a>
</cfoutput>
</cfif>
<>
<cfoutput>
<CFIFstartrowBackGT0>
<cfifpageEQ1>
<CFSETNTback=1>
<cfelse>
<cfsetNTback=page-1>
</cfif>
<ahref="#CGI.SCRIPT_NAME#?startrow=#startrowback#&page=#NTback#">上一页</a>
</CFIF>
<CFIFstartrownextLTEtotalrows>
<cfsetNTnext=page+1>
<ahref="#CGI.SCRIPT_NAME#?startrow=#startrownext#&page=#NTnext#">下一页</a>
</CFIF>
</cfoutput>
<cfsettingenablecfoutputonly="no"><->
GAMEOVER.
说明一下上面没有注释的几段控制语句:
<cfparamname="n"default=7type="numeric">
这里设置默认为7,也就是当你在浏览12条的记录的时候,会显示91011[12]131415
数一下,是不是7条,这是重要的一部分,你也可以设置为双数,但是效果不会怎么好,不平衡了.
另外上面还有自动隐藏的功能.例如我在最后一页了,不会出现末页和下一页.
再次提醒一下:你必须把你自己的查询变量名替换newarticle.recordcount这个我设置的变量名.最好用查找/替换一次全部换掉.