【问题标题】:Coldfusion pagination and searchColdfusion分页和搜索
【发布时间】:2012-10-03 13:26:38
【问题描述】:

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

【问题讨论】:

  • 您能否提供更多关于您希望它如何工作的详细信息?您提到添加用于搜索的文本框,但随后您说他们输入了特定的 positionid。您是想在搜索后再次显示所有结果还是只显示与他们搜索的内容匹配的记录?或者您是否想显示可点击的页码以在这些页面的结果之间来回切换?更多细节请...
  • 当用户输入 positionid 并点击搜索时,必须显示与搜索结果匹配的结果......带有可点击的页码来回......抱歉不清楚...... .

标签: javascript coldfusion


【解决方案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 类型和验证逻辑。

更新以下 cmets 中发布的新问题

这里有一个快速简单的示例,说明如何使用 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 页面的值。

【讨论】:

  • @user747291 太好了!很高兴我能帮上忙。如果您不介意,请将此作为答案,以便其他找到此问题的人可以找到它。谢谢。
  • 如何为我想访问的特定页面添加搜索选项。就像我有 200 页。为了跳转到第 120 页,而不是点击到第 120 页。请建议。谢谢
  • 您应该能够在 URL 中传递适当的值以跳转到任何页面。喜欢&lt;a href="?start=120"&gt;120&lt;/a&gt;。知道了这一点,您可以让用户输入一个值,验证他们输入的值,如果可以,然后使用 javascript 导航到他们输入的页码。
  • 你能举个例子吗?我现在有一个包含所有页码的下拉菜单。但无法导航到 onchange 的特定页面。
  • 我在上面的回答中包含了一个例子。
猜你喜欢
  • 2013-07-25
  • 2021-12-29
  • 1970-01-01
  • 2014-11-02
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 2014-10-05
相关资源
最近更新 更多