下の本と同時並行でその下の本も、emacsのタイピング用として使っています。
で、上の本では、dreamweaverと連携したcoldfusionの開発を紹介しているのですがソースがほとんどかかれていなくて、サンプルプログラムの中に、ページングに関する、項目があったので、自作するとどうなるのかなーと思い、ちょっと考えてみました。
<cfparam name="form.flg" default="0"> <cfparam name="form.startrow" default="1"> <cfparam name="form.endrow" default="10"> <cfparam name="pageup" default="10">
<cfquery name="lq" datasource="test"> <--- クエリーを記述 ---> </cfquery>
<cfset lq_total = lq.recordcount> <cfswitch expression="#form.flg#"> <!--- 先頭へ ---> <cfcase value="1"> <cfset form.startrow = "1"> <cfset form.endrow = "10"> </cfcase> <!--- 前へ ---> <cfcase value="2"> <cfset form.startrow = form.startrow - pageup> <cfset form.endrow = form.startrow + pageup - 1> </cfcase> <!--- 次へ ---> <cfcase value="3"> <cfset form.startrow = form.endrow + 1> <cfset form.endrow = form.endrow + pageup> </cfcase> <!--- 最後へ ---> <cfcase value="4"> <cfif Right(lq_total,1) eq "0"> <cfset form.startrow = lq_total - pageup + 1> <cfelse> <cfset form.startrow = left(lq_total,Len(lq_total)-1)&"1"> </cfif> <cfset form.endrow = lq_total> </cfcase> </cfswitch>
<cfif form.endrow gt lq_total> <cfset form.endrow = lq_total> </cfif>
<html> <head> <title>test</title> </head> <body> <cfoutput> #lq_total#件中:#form.startrow#件~#form.endrow#まで表示しています。
<table> <cfloop query="lq" startrow="#form.startrow#" endrow="#form.endrow#"> <--- クエリーを表示 ---> </cfloop> <tr> <td colspan="3"> <cfif form.startrow gt 1> <a href="javascript:lf_go(1);">先頭へ</a> <a href="javascript:lf_go(2);">前へ</a> </cfif> <cfif form.endrow lt lq_total> <a href="javascript:lf_go(3);">次へ</a> <a href="javascript:lf_go(4);">最後へ</a> </cfif> </td> </tr> </table>
<form name="frm" action="./test.cfm" method="post"> <input type="hidden" name="flg" value=""> <input type="hidden" name="startrow" value="#form.startrow#"> <input type="hidden" name="endrow" value="#form.endrow#"> </form> <script type="text/javascript"> function lf_go(amode){ with(document.frm){ flg.value = amode; submit(); } } </script> </cfoutput> </body> </html> |
「最後へ」は、問い合わせの一番最後のページに進み、「最初へ」は、問い合わせの一番最初のページに進むような仕様にしています。
こうやって、フォーマットしていっかい開発しておけば、後で、ある程度使い回しが効くので便利かなと
0 コメント:
コメントを投稿