我在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>
答案 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页面的所有值。