转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
Coldfusion MX PageList 菜鸟版         ★★★★

Coldfusion MX PageList 菜鸟版

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1081 更新时间:2009/4/23 10:31:42

最初写的:

1、可以实现的功能:
首页,末页,上一页,下一页以及指定页的跳转。
首页末页有自动隐藏的功能。
跳转下拉菜单动态显示当前页码和总页数。

2、原理

核心原理参考Codefusion MX 附带的Compass Travel例子 中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#,而不能再在里面使用动态参数,请问高手有什么好的解决办法?


<!--- 数据库定义 --->
<cfset databasename="cfsnippets"><!--- 数据库名 --->
<cfset tablename="centers"><!--- 表名 --->
<cfset targetname="center_ID"><!--- 字段名(一般为ID),定义这里的同时,还要用查找替换所有gotopage.center_ID里面的center_ID --->

<!--- 处理跳转的动作 --->
<cfif IsDefined("Form.RecordID")><!--- 判断是否有跳转请求 --->
<cfquery name="pageQuery" datasource="#databasename#" maxrows="1">
SELECT #targetname# FROM #tablename#            
<cfif IsDefined("Form.btnPrev")><!--- 前一页页码 --->
WHERE #targetname# < #Form.RecordID#
ORDER BY #targetname# DESC        
<cfelseif IsDefined("Form.btnNext")><!--- 后一页页码 --->
WHERE #targetname# > #Form.RecordID#
ORDER BY #targetname#        
<cfelseif IsDefined("Form.btnFirst")><!--- 首页页码 --->
ORDER BY #targetname#        
<cfelseif IsDefined("Form.btnLast")><!--- 末页页码 --->
WHERE #targetname# > #Form.RecordID#
ORDER BY #targetname# DESC
<cfelseif IsDefined("Form.goto")><!--- 指定页码 --->
WHERE #targetname# = #Form.goto#
</cfif>
</cfquery>
<cfif pageQuery.RecordCount is 1>
<cflocation url="#cgi.SCRIPT_NAME#?ID=#pageQuery.center_ID#"><!--- 跳转 --->
<cfelse>
<cflocation url="#cgi.SCRIPT_NAME#?ID=#page.RecordID#">
</cfif>
</cfif>

<!--- 获取首页与末页所对应的ID --->
<cfquery name="gotopage" datasource="#databasename#" >
SELECT #targetname# FROM #tablename#
</cfquery>
<cfoutput query="gotopage">
<cfif gotopage.currentrow is 1>
<cfset firstid=gotopage.center_ID><!--- 首页对应的ID --->
<cfelseif gotopage.currentrow is gotopage.recordcount>
<cfset lastid=gotopage.center_ID><!--- 末页对应的ID --->
</cfif>
</cfoutput>

<!--- 获取本页所对应的ID,如没有传递,默认为首页ID --->
<cfif isdefined("url.id")>
<cfset pageid=url.id>
<cfelse>
<cfset pageid=firstid>
</cfif>

<!--- 翻页主体部分 --->
<form action="#cgi.SCRIPT_NAME#" method="post">
<input type="hidden" name="RecordID" value="<cfoutput>#pageid#</cfoutput>"><!--- 隐藏字段传送本页ID --->

<!-- 首页/上一页-->
<cfif pageid neq firstid>
<input type="submit" name="btnFirst" value="首页">
<input type="submit" name="btnPrev" value="上一页">
</cfif>

<!-- 页数 ,跳转-->
<B>跳转到: </B>第<select name="goto">
<cfoutput query="gotopage">
<cfif gotopage.center_ID is pageid>
<option value="#gotopage.center_ID#" selected>#gotopage.currentrow#<!--- 使本页的数字处于被选择状态 --->
<cfelse>
<option value="#gotopage.center_ID#">#gotopage.currentrow#
</cfif>
</cfoutput>
</option></select>/<cfoutput >#gotopage.recordcount#</cfoutput>页
<input name="Go" type="submit" value="GO">

<!-- 末页/下一页-->
<cfif pageid neq lastid>
<input type="submit" name="btnNext" value="下一页">
<input type="submit" name="btnLast" value="末页">
</cfif>
</form>


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

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

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

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

<!--- 初始化 --->
<cfset databasename="cfsnippets"><!--- 数据库名 --->
<cfset tablename="centers"><!--- 表名 --->
<cfset targetname="center_ID"><!--- 字段名(一般为ID) --->
<cfset pagerow=1><!--- 每页记录数 --->
<!--- 处理跳转的动作 --->
<cfif IsDefined("Form.thispage")><!--- 判断是否有跳转请求 --->        
<cfif IsDefined("Form.btnPrev")><!--- 前一页页码 --->
<cfset pageQuery=#Form.thispage#-1>    
<cfelseif IsDefined("Form.btnNext")><!--- 后一页页码 --->
<cfset pageQuery=#Form.thispage#+1>        
<cfelseif IsDefined("Form.btnFirst")><!--- 首页页码 --->
<cfset pageQuery=1>        
<cfelseif IsDefined("Form.btnLast")><!--- 末页页码 --->
<cfset pageQuery=#Form.lastpage#>
<cfelseif IsDefined("Form.goto")><!--- 指定页码 --->
<cfset pageQuery=#Form.goto#>
</cfif>
<cflocation url="#cgi.SCRIPT_NAME#?page=#pageQuery#"><!--- 跳转 --->
</cfif>
<!--- 获取末页页码 --->
<cfquery name="gotopage" datasource="#databasename#" >
SELECT #targetname# FROM #tablename#
</cfquery>
<cfset lastpage=#gotopage.recordcount#\pagerow><!--- 末页页码 --->
<!--- 获取本页页码,如没有传递,默认为1 --->
<cfif isdefined("url.page")>
<cfset pageid=url.page>
<cfelse>
<cfset pageid=1>
</cfif>
<!--- 翻页主体部分 --->
<form action="" method="post">
<input type="hidden" name="thispage" value="<cfoutput>#pageid#</cfoutput>"><!--- 隐藏字段传送本页ID --->
<input type="hidden" name="lastpage" value="<cfoutput>#lastpage#</cfoutput>"><!--- 隐藏字段传送末页页码 --->
<!-- 首页/上一页-->
<cfif pageid neq 1>
<input type="submit" name="btnFirst" value="首页">
<input type="submit" name="btnPrev" value="上一页">
</cfif>
<!-- 页数 ,跳转-->
<B>跳转到: </B>第<select name="goto">
<cfloop index="pagenumber" from="1" to="#lastpage#">
<cfoutput>
<cfif #pagenumber# is pageid>
<option value="#pagenumber#" selected>#pagenumber#<!--- 使本页的数字处于被选择状态 --->
<cfelse>
<option value="#pagenumber#">#pagenumber#
</cfif>
</cfoutput>
</cfloop>
</option></select>/<cfoutput >#lastpage#</cfoutput>页
<input name="Go" type="submit" value="GO">
<!-- 末页/下一页-->
<cfif pageid neq lastpage>
<input type="submit" name="btnNext" value="下一页">
<input type="submit" name="btnLast" value="末页">
</cfif>
</form>


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


[网页制作]ColdFusion MX 轻松制作 FLASH  [网页制作]Coldfusion MX技巧精华收集(2)
[网页制作]Coldfusion MX技巧精华收集(1)  [网页制作]DW MX 的快键一览表
[网页制作]Fireworks MX 2004从入门到精通视频教程  [网页制作]创新学习法之Fireworks MX 2004视频教程
[网页制作]Fireworks MX 2004金属特效字制作  [网页制作]使用 Fireworks MX 2004 制作IE浏览器图标
[网页制作]Fireworks mx 2004制作风景类Logo全过程  [网页制作]详解Fireworks MX 2004丰富的图像导出功能
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台