Coldfusion MX PageList 菜鸟版教程_ColdFusion教程-查字典教程网
Coldfusion MX PageList 菜鸟版教程
Coldfusion MX PageList 菜鸟版教程
发布时间:2016-12-28 来源:查字典编辑
摘要:最初写的:1、可以实现的功能:首页,末页,上一页,下一页以及指定页的跳转。首页末页有自动隐藏的功能。跳转下拉菜单动态显示当前页码和总页数。2...

最初写的:

1、可以实现的功能:

首页,末页,上一页,下一页以及指定页的跳转。

首页末页有自动隐藏的功能。

跳转下拉菜单动态显示当前页码和总页数。

2、原理

核心原理参考CodefusionMX附带的CompassTravel例子中tripdetail.cfm的翻页原理。即假设当前页为第6页,对数据库进行查询,返回数maxRows定为1,查上一页就是对小于6的数进行倒序查询,得出的结果是5,4,3...,因为只返回一个值,所以就得到了5。其他的同理。

3、使用方法

将代码放入要实现pagelist的地方,用查找替换修改里面的cfsnippets,centers和center_ID,把他们换成实际使用的数据库名,表名和字段名。

4、局限与不足

因为学cf不到一个星期,对cfml还不是很熟悉,所以有些代码还是很繁琐,我觉得不足的地方有:

(1)样式具有局限性,因为采用的是表单form,所以只能用button或图片来显示,不能用单纯的文字。

(2)修改还得要用查找替换。原来设想只改前面数据库定义的三个变量就可以,但后来发现在<cfout>里面使用查询的结果,必须要是确定的值,比如#gotopage.currentrow#,而不能再在里面使用动态参数,请问高手有什么好的解决办法?

<->

<cfsetdatabasename="cfsnippets"><->

<cfsettablename="centers"><->

<cfsettargetname="center_ID"><->

<->

<cfifIsDefined("Form.RecordID")><->

<cfqueryname="pageQuery"datasource="#databasename#"maxrows="1">

SELECT#targetname#FROM#tablename#

<cfifIsDefined("Form.btnPrev")><->

WHERE#targetname#<#Form.RecordID#

ORDERBY#targetname#DESC

<cfelseifIsDefined("Form.btnNext")><->

WHERE#targetname#>#Form.RecordID#

ORDERBY#targetname#

<cfelseifIsDefined("Form.btnFirst")><->

ORDERBY#targetname#

<cfelseifIsDefined("Form.btnLast")><->

WHERE#targetname#>#Form.RecordID#

ORDERBY#targetname#DESC

<cfelseifIsDefined("Form.goto")><->

WHERE#targetname#=#Form.goto#

</cfif>

</cfquery>

<cfifpageQuery.RecordCountis1>

<cflocationurl="#cgi.SCRIPT_NAME#?ID=#pageQuery.center_ID#"><->

<cfelse>

<cflocationurl="#cgi.SCRIPT_NAME#?ID=#page.RecordID#">

</cfif>

</cfif>

<->

<cfqueryname="gotopage"datasource="#databasename#">

SELECT#targetname#FROM#tablename#

</cfquery>

<cfoutputquery="gotopage">

<cfifgotopage.currentrowis1>

<cfsetfirstid=gotopage.center_ID><->

<cfelseifgotopage.currentrowisgotopage.recordcount>

<cfsetlastid=gotopage.center_ID><->

</cfif>

</cfoutput>

<->

<cfifisdefined("url.id")>

<cfsetpageid=url.id>

<cfelse>

<cfsetpageid=firstid>

</cfif>

<->

<formaction="#cgi.SCRIPT_NAME#"method="post">

<inputtype="hidden"name="RecordID"value="<cfoutput>#pageid#</cfoutput>"><->

<>

<cfifpageidneqfirstid>

<inputtype="submit"name="btnFirst"value="首页">

<inputtype="submit"name="btnPrev"value="上一页">

</cfif>

<>

<B>跳转到:</B>第<selectname="goto">

<cfoutputquery="gotopage">

<cfifgotopage.center_IDispageid>

<optionvalue="#gotopage.center_ID#"selected>#gotopage.currentrow#<->

<cfelse>

<optionvalue="#gotopage.center_ID#">#gotopage.currentrow#

</cfif>

</cfoutput>

</option></select>/<cfoutput>#gotopage.recordcount#</cfoutput>页

<inputname="Go"type="submit"value="GO">

<>

<cfifpageidneqlastid>

<inputtype="submit"name="btnNext"value="下一页">

<inputtype="submit"name="btnLast"value="末页">

</cfif>

</form>

后来发现不对劲,又进行了修改:

上面的代码只能用来list每页只有一个记录的page,如果一页有多个记录,上面的方法是不行的。

下面是我做了修改的代码,可以实现一个页面放多个记录了,每个页面放多少个记录可以在pagerow里面定义,此外也不需要通过查找替换来更改了,只要把初始化里面的四个参数定为自己相关的内容就行了,别的地方不需要改了。

代码比原来的又精简了不少:)

<->

<cfsetdatabasename="cfsnippets"><->

<cfsettablename="centers"><->

<cfsettargetname="center_ID"><->

<cfsetpagerow=1><->

<->

<cfifIsDefined("Form.thispage")><->

<cfifIsDefined("Form.btnPrev")><->

<cfsetpageQuery=#Form.thispage#-1>

<cfelseifIsDefined("Form.btnNext")><->

<cfsetpageQuery=#Form.thispage#+1>

<cfelseifIsDefined("Form.btnFirst")><->

<cfsetpageQuery=1>

<cfelseifIsDefined("Form.btnLast")><->

<cfsetpageQuery=#Form.lastpage#>

<cfelseifIsDefined("Form.goto")><->

<cfsetpageQuery=#Form.goto#>

</cfif>

<cflocationurl="#cgi.SCRIPT_NAME#?page=#pageQuery#"><->

</cfif>

<->

<cfqueryname="gotopage"datasource="#databasename#">

SELECT#targetname#FROM#tablename#

</cfquery>

<cfsetlastpage=#gotopage.recordcount#pagerow><->

<->

<cfifisdefined("url.page")>

<cfsetpageid=url.page>

<cfelse>

<cfsetpageid=1>

</cfif>

<->

<formaction=""method="post">

<inputtype="hidden"name="thispage"value="<cfoutput>#pageid#</cfoutput>"><->

<inputtype="hidden"name="lastpage"value="<cfoutput>#lastpage#</cfoutput>"><->

<>

<cfifpageidneq1>

<inputtype="submit"name="btnFirst"value="首页">

<inputtype="submit"name="btnPrev"value="上一页">

</cfif>

<>

<B>跳转到:</B>第<selectname="goto">

<cfloopindex="pagenumber"from="1"to="#lastpage#">

<cfoutput>

<cfif#pagenumber#ispageid>

<optionvalue="#pagenumber#"selected>#pagenumber#<->

<cfelse>

<optionvalue="#pagenumber#">#pagenumber#

</cfif>

</cfoutput>

</cfloop>

</option></select>/<cfoutput>#lastpage#</cfoutput>页

<inputname="Go"type="submit"value="GO">

<>

<cfifpageidneqlastpage>

<inputtype="submit"name="btnNext"value="下一页">

<inputtype="submit"name="btnLast"value="末页">

</cfif>

</form>

呵呵,一个菜鸟版的pagelist终于完成,十分简单,用的方法也挺笨的。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ColdFusion学习
    热门ColdFusion学习
    脚本专栏子分类