2012-12-13 29 views
2

我正在使用dopefly's Pagination.cfc在我正在構建的網站上創建分頁,但是我無法專門針對它做出反應。Coldfusion分頁 - 固定頁碼數

我想獲得它,所以它開始像這樣

*1* 2 3 4 ... x   
1 *2* 3 4 ... x   
1 2 *3* 4 ... x   
1 2 3 *4* ... x   
1 ... 4 *5* 6 7 ... x 

所以它總是會在中間顯示4,並在最後顯示在適當的時候,第一頁和最後一頁。

然而,此刻它會

*1* 2 3 4 ... x 
1 *2* 3 4 5 ... x 
1 2 *3* 4 5 6 ... x 
1 2 3 4 *5* 6 7 ... x 
1 2 3 4 5 *6* 7 8 ... x 
1 ... 3 4 5 6 *7* 8 9 ... x 
1 ... 4 5 6 7 *8* 9 10 ... x 

所以它一直走,直到有8所顯示的,那麼它將開始保持7在中間,而不是4住,那麼我們什麼時候在第五頁中間始終顯示4,最後的第一個/最後一個。

E:我試着打約與文檔中定義的setNumericEndBufferCount()setNumericDistanceFromCurrentPageVisible()變量,但是我的CFC以及如何瞭解他們的行爲是不夠的廣闊修改實際cfc(如duncan以下建議) 。

+0

那麼你有什麼嘗試? [documentation](http://www.dopefly.com/projects/pagination/pagination_cfc_documentation.cfm)顯示了處理該問題的設置。 –

+0

@PeterBoughton - 確實如此,但它仍然無法按我想要的方式工作,無論我嘗試修改哪些設置。 –

+0

所以***你有什麼嘗試?*** - 告訴我們你認爲應該工作的代碼。它可以被確認爲缺陷/缺少特徵,或者建議如何適應它以適當地工作。 –

回答

1

Joshua, 感謝您使用我的分頁庫!對不起,它不是完全按照你的希望行事。您的問題與最近發佈的功能請求類似,請求setFixedMaximumNumbersShown選項,但具有某種彈性計數和某種彈性,有點像亞馬遜的分頁,但正如您注意到的,它只會在您翻閱記錄時纔會增長。你可以自己解決這個問題,但是你將不得不延長CFC使用的限制。

解決方案是創建一個組件(我們稱之爲bouncyPagination.cfc),它擴展了我的組件Pagination.cfc。您將需要重寫至少一種方法來完成您的任務。您可以先閱讀documentation on Extending Pagination.cfc,這可能會有所幫助。你的代碼看起來像這樣。

<cfcomponent extends="Pagination"> 
    <cffunction name="renderNumericLinksHTML"> 
     <!--- Your improved bouncy numeric links HTML generation here ---> 
     <!--- Start by copying & pasting code from the matching ---> 
     <!--- renderNumericLinksHTML method in Pagination.cfc ---> 
    </cffunction> 
</cfcomponent> 

看看代碼中Pagination.cfc,在renderNumericLinksHTML功能。通過複製和粘貼啓動自己,然後重寫BouncyPagination.cfc根據您想要的任何邏輯寫入這些數字鏈接。你甚至可以添加一些方法來獲取和設置你的數字的邊界,在你的例子中,4是神奇的數字。我會想象你會添加這樣的東西到你的組件。

<!--- Set your new parameter's default by overriding the init method ---> 
<cffunction name="init"> 
    <cfset variables.my.BouncyBounds = 4 /> 
    <return super.init() /> 
</cffunction> 

<!--- Create getter/setter. Note the rendered=false is a flag to force HTML recomposition when a UI option changes. ---> 
<cffunction name="getBouncyBounds"> 
    <cfreturn variables.my.bouncyBounds /> 
</cffunction> 
<cffunction name="setBouncyBounds"> 
    <cfargument name="_BouncyBounds" type="string" /> 
    <cfset variables.my.BouncyBounds = arguments._BouncyBounds/> 
    <cfset variables.my.rendered = false /> 
</cffunction> 

您的新renderNumericLinksHTML方法將調用getBouncyBounds()以編程方式更改您的新的充氣分頁方法的邊界。

我希望可以幫到你 - 這就像我沒有爲你做功課一樣。如果你寫的東西適合你,並且可以與BSD許可共享,請將代碼發給我,我將把它包含在下一個版本中。

0

the documentation這聽起來像你可以通過使用NumericDistanceFromCurrentPageVisible來實現這一點。問題是,表明有多少鏈接用於當前鏈接的任一側。所以你可以將它設置爲2,它會顯示2個鏈接的任何一方,即5組。要實現一組4,你必須顯示前1鏈接和後2鏈接(反之亦然)。 。或之後的3個鏈接,如果你在鏈接列表的開頭或結尾。

建議您深入研究CFC本身,瞭解它如何處理NumericDistanceFromCurrentPageVisible,並查看是否可以擴展此參數以獲取前後顯示的鏈接數量的2個參數。或者,也可以修改它以使用該參數作爲在一個組中顯示多少個鏈接的基礎。

+0

我知道可以修改'.cfc'來做到這一點,但是我不知道如何擴展函數以獲得2個額外的參數,因此我在這裏發佈了一個問題。道歉,如果我不夠清楚,我會編輯我的問題。 –