2014-06-23 58 views
0

如何使用<g:paginate\>標記對錶中的數組列表進行分頁?帶數組的GSP中的分頁列表

我有這個在我的控制器

def selectevents(){ 
def events = DomainEvents.findAllByMonth('June') 
[events:events, count:events.size()] 

} 

而且我有這個在我的GSP:

<table id="results-table" class="table table-bordered table-striped" style="width:100%"> 
<thead> 
<tr style="background: #d3d3d3;"> 
    <th style="width: 3%;text-align: center;"></th> 
    <th style="width: 10%;text-align: center;">Name</th>   
</tr> 
</thead> 
<g:each in="${events}" status="i" var="eventsInstance"> 
    <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 
    <td>-</td> 
    <td>${eventsInstance?.Name}</td> 

    </tr> 
</g:each> 

,然後這樣的:

<g:paginate next="Forward" prev="Back" maxsteps="5" controller="Controller" action="selectevents" total="${count}" /> 

但分頁標籤不會出現。我想分頁得到每頁5行,有一個?

回答

0

您的代碼正在調用DomainEvents.findAllByMonth('June'),它將返回6月份的所有事件。您只想檢索其中5個子集,然後使用分頁瀏覽這些子集。

你可能想在你的控制器是這樣的:在你的GSP

def showEvents() { 
    params.max = 5 
    def count = DomainEvents.countByMonth('June') 
    def events = DomainEvents.findAllByMonth('June', params) 
    [domainEventsInstanceCount: DomainEvents.count(), domainEventsInstanceList: events] 
} 

然後是這樣的:

<div class="pagination"> 
    <g:paginate total="${domainEventsInstanceCount ?: 0}" /> 
</div> 

我希望幫助。

+0

請注意,因爲您不想引用'events.size()',所以'DomainEvents.countByMonth('June')'是必需的,因爲這隻會包含5個元素。你想要5個元素進行渲染,但也想知道總數,所以分頁標籤知道在瀏覽所有這些元素時涉及多少步驟。 –