DDR爱好者之家 Design By 杰米
最初写的:
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终于完成,十分简单,用的方法也挺笨的。
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终于完成,十分简单,用的方法也挺笨的。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]