主页 > 知识库 > Coldfusion MX PageList 菜鸟版教程

Coldfusion MX PageList 菜鸟版教程

热门标签:乐昌电话机器人 武汉呼叫中心外呼系统线路商 邯郸外呼调研线路 开封百应电销机器人联系方式 电话机器人电话卡封号怎么办 北京语音电销机器人价格 真人语音电销机器人系统 买了外呼系统不想用了怎么办 浦东上海400开头的电话申请
最初写的: 

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 PageList 菜鸟版教程》,本文关键词  Coldfusion,PageList,菜鸟,版,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Coldfusion MX PageList 菜鸟版教程》相关的同类信息!
  • 本页收集关于Coldfusion MX PageList 菜鸟版教程的相关信息资讯供网民参考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推荐文章