Coldfusion分页和搜索

时间:2012-10-03 13:26:39

标签: javascript coldfusion

我在ColdFusion页面上有以下代码。此页面显示以下查询中的数据,每页有25条记录和分页。现在我需要提供一个文本框和搜索按钮,以便用户可以输入positionid并点击搜索....我在这里遇到的问题是如果positionid在例如第7页出来的话,如何显示第n页共200页请指教。感谢

<cfquery name="qry_postn_detail" datasource="mbtran">
    select distinct position_id,schedule_group,accrual_profile,pay_rule_name,rest_days
    from kronos_if.position_detail  
    order by position_id 
</cfquery>

<cfset perpage = 25>

<cfparam name="url.start" default="1">
<cfif not isNumeric(url.start) or url.start lt 1 or url.start gt qry_postn_detail.recordCount or round(url.start) neq url.start>
    <cfset url.start = 1>
</cfif>

<cfset totalPages = ceiling(qry_postn_detail.recordCount / perpage)>
<cfset thisPage = ceiling(url.start / perpage)>

<cfset thisPage = Int(start / 25) + 1>

Page<cfoutput>
<cfloop from="1" to="#totalPages#" index="i">
    <cfif i is thisPage>
        #i#
    <cfelse>
        <cfif totalPages lte 5 or i is 1 or i is totalPages or (i gt thisPage - 3 and i lt thisPage + 3) or ((thisPage is 1 or thisPage is 2) and i lt 6) >
            <a href="?start=#(i*25)-24#">#i#</a>
        <cfelse>
            <cfif i is 2 or i is totalPages - 1>
                ...
            </cfif>
        </cfif>
     </cfif>
 </cfloop>
 </cfoutput>

1 个答案:

答案 0 :(得分:1)

根据您的评论,我认为您需要做的就是在搜索表单提交时在查询中包含搜索参数。然后查询结果将只包含与他们搜索的内容匹配的记录,并且您的分页代码仍将像以前一样工作,但这次仅针对匹配的记录。

所以你的查询看起来像是:

<cfquery name="qry_postn_detail" datasource="mbtran">
    select distinct position_id,schedule_group,accrual_profile,pay_rule_name,rest_days
    from kronos_if.position_detail 
    <cfif IsDefined("form.searchfield") AND IsValid("integer", form.searchfield)>
        where position_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.searchfield#">
    </cfif>
    order by position_id 
</cfquery>

注意:我假设position_id是表格中的整数。您需要根据它的实际类型适当地更改cfqueryparam类型和验证逻辑。

在以下评论中发布的新问题更新

以下是如何使用JavaScript跳转到特定页面的简单快速示例。您提到您已经有一个带有页码的select框。您需要做的就是将onChange事件处理程序添加到select标记,并调用一个JavaScript函数,该函数将重新加载页面,并将所选值附加到网址。

您的select看起来像这样:

<select name="page" onChange="jump(this.value);">
    <option value="101">101</option>
    <option value="102">102</option>
    <option value="103">103</option>
    <option value="104">104</option>
</select>

一个简单的JavaScript示例如下所示:

<script language="JavaScript">
    function jump(pagenum) {
        document.location.href("?start="+pagenum);
    }
</script>

请记住验证/清理传递给ColdFusion页面的所有值。