2012-10-03 50 views
0

我在ColdFusion頁面上有下面的代碼。此頁面顯示下面的查詢中的數據,每頁有25條記錄並附有分頁。現在我需要提供一個文本框和搜索按鈕,以便用戶可以輸入positionid並點擊搜索....我在這裏遇到的問題是,如果positionid在例如第7頁出現時如何顯示第n頁200頁。請指教。謝謝Coldfusion分頁和搜索

<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

你能提供一些關於你如何工作的更多細節嗎?你提到添加一個文本框進行搜索,但你說他們輸入一個特定的positionid。您想要在搜索後再次顯示所有結果,還是隻想記錄匹配的內容?還是你想顯示可點擊的頁碼在這些頁面的結果之間來回切換?更多詳細信息請... –

+0

當用戶輸入positionid並點擊搜索結果必須顯示匹配的搜索結果....與可點擊的頁碼來回去......抱歉不清楚.... – user747291

回答

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頁面的任何和所有值。

+0

非常感謝它的工作! – user747291

+0

@ user747291太好了!很高興我能幫上忙。如果您不介意,請將其作爲答案,以便其他人發現此問題可以找到答案。謝謝。 –

+0

如何爲我想要去的特定頁面添加搜索選項。就像我有200頁。爲了跳到第120頁,而不是點擊直到第120頁。請建議。謝謝 – user747291