2010-10-30 71 views
3

我正在嘗試使用2 g:paginate標籤對1個gsp上的2個表進行分頁。點擊一個表格中的分頁按鈕會對兩個表格進行分頁,因爲這兩個分頁標籤都使用相同的「max」和「offset」參數。我怎樣才能通過一個表分頁而不分頁另一個表?Grails對多個表進行分頁

在此先感謝。

回答

3

這是一個在paginate標籤上使用額外參數的例子。 Foo和Bar是兩個具有String屬性「name」的域類。我在Bootstrap.groovy中創建了50個。

PageController.groovy:

class PageController { 

    def index = { 
    if (params.paginate == 'Foo') { 
     def fooPagination = [max: params.max, offset: params.offset] 
     session.fooPagination = fooPagination 
    } else if (params.paginate == 'Bar') { 
     def barPagination = [max: params.max, offset: params.offset] 
     session.barPagination = barPagination 
    } 
    def barList = Bar.list(session.barPagination ?: [max: 10, offset: 0]) 
    def fooList = Foo.list(session.fooPagination ?: [max: 10, offset: 0]) 
    //This is to stop the paginate using params.offset/max to calculate current step and use the offset/max attributes instead  
    params.offset = null 
    params.max = null 
    [fooList: fooList, totalFoos: Foo.count(), totalBars: Bar.count(), barList: barList] 
    } 
} 

index.gsp中:

<html> 
<head> 
    <title>Multi Pagination Example</title> 

    <meta name="layout" content="main"/> 
    <style type="text/css" media="screen"> 

    h2 { 
    margin-top: 15px; 
    margin-bottom: 15px; 
    font-size: 1.2em; 
    } 
    </style> 

</head> 
<body> 
<table> 
    <tr> 
    <td> 
     <h2>Foo</h2> 
     <table> 
     <tr> 
      <th>Name</th> 
     </tr> 
     <g:each in="${fooList}"> 
      <tr><td>${it.name}</td></tr> 
     </g:each> 
     <tr> 
      <td class="paginateButtons"> 
      <g:paginate total="${totalFoos}" max="10" offset="${session.fooPagination?.offset}" params="${[paginate:'Foo']}"/></td> 
     </tr> 
     </table> 
    </td> 
    <td> 
     <h2>Bar</h2> 
     <table> 
     <tr> 
      <th>Name</th> 
     </tr> 
     <g:each in="${barList}"> 
      <tr><td>${it.name}</td></tr> 
     </g:each> 
     <tr> 
      <td class="paginateButtons"> 
      <g:paginate total="${totalBars}" max="10" offset="${session.barPagination?.offset}" params="${[paginate:'Bar']}"/></td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 

</body> 
</html> 

歡呼

+0

感謝您的回覆。對於Grails而言,我有點新鮮感,但我仍然沒有得到工作,無論是行動還是身份證。有什麼機會可以給我更多的細節? – emiles 2010-11-08 03:30:31

+0

@emiles我已經用示例更新了我的答案 – leebutts 2010-11-08 05:30:36

+0

我已經嚴格按照您的示例進行了操作,但在控制器操作中沒有看到「分頁」參數。是否有任何理由爲什麼'params'屬性不包含自定義值?我還應該提到我對grails宇宙相對來說比較陌生...... – toddk 2011-06-02 17:36:35

0

Grails分頁對於一個頁面中的多個分頁是完全沒有用的,因爲你不能傳遞自定義max和offset作爲屬性。這是爲什麼

def offset = params.int('offset') ?: 0 
def max = params.int('max') 

和文檔告訴你的原因「最大(可選) - 每頁顯示的記錄數(默認爲10)僅用於如果params.max爲空」 什麼呢? 創建我無法控制的東西是什麼意思。 良好的編程方式 - 讓我輸入我的變量或給我選項,然後使用您的默認值!

+0

您可以隨時控制它 - 用params.max = anyint覆蓋它 – aldrin 2014-07-15 03:27:22