0

我在 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>
4

1 回答 1

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 函数,该函数将重新加载页面,并将所选值附加到 url。

你的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 页面的值。

于 2012-10-03T15:21:54.473 回答