2012-03-12 21 views
0

这里是我想看到每页5项的页面...当前它显示每页10个,它重复相同每页10个不是下一组数据。分页问题:我没有看到列表被分解成部分,它在每个页面上都显示

我想让分页工作正确...首先简单地导航到下一组数据会很好,第二个使每页数量更小,三个如何使整行数据可点击所以我可以看看列表中的特定项目?所有这些看起来很混乱。

<%@ page import="tictoc.Store" %> 
    <!doctype html> 
    <html> 
     <head> 
      <meta name="layout" content="main"> 
      <g:set var="entityName" value="${message(code: 'store.label', default: 'Store')}" /> 
      <title><g:message code="default.show.label" args="[entityName]" /></title> 
     </head> 
     <body> 

      <h1> Ticket Store </h1> 
      <div> 
       <table border=0 class="eventsTable"> 
        <tr> 

         <th>Event</th> 
         <th>Start </th> 
         <th>End </th> 
         <th>Description</th> 
        </tr> 
        <g:each var="event" in="${events}"> 

        <tr> 

         <td>${event.name}</td> 
         <td><g:formatDate format="MM/dd/yyyy" date="${event.startDate}"/></td> 
         <td><g:formatDate format="MM/dd/yyyy" date="${event.endDate}"/></td> 
         <td>${event.desc}</td> 
        </tr> 

        </g:each> 
       </table> 

      </div> 
      <div class="paginateButtons"> 
       <g:paginate controller="store" 
        action="show" 
        params="[name:active]" 
        total="${totalEvents}" /> 
      </div> 
     </body> 
    </html> 

这里是控制器......我尝试每页最大控制为5,我以为它会处理把正确的数据集,因为它进行分页。

package tictoc 

    import tictoc.Event 

    class StoreController { 

     Event event 
     static defaultAction = "activeEvents" 

     def show = { 
      log.error 'exec activeEvents' 
      activeEvents() 
     } 

     def activeEvents = { 
      log.error 'exec activeEvents' 

      def max = Math.min(params.max?.toInteger() ?:5, 5) 
      def offset = params.offset?.toInteger() ?: 0 
      def total = Event.count() 
      def eventList = Event.getAll() 

      return [events:eventList, 
          totalEvents:total, 
          active:params.active]     
     } 
    } 

第三哪能让PAGINATE按钮有点大,他们是相当小的:我试着调整PAGINATE标签,但似乎没有让他们显得更大。

/ 
.paginateButtons { 
    background: #fff url(../images/skin/shadow.jpg) bottom repeat-x; 
    border: 1px solid #ccc; 
    border-top: 0; 
    color: #666; 
    font-size: 12px; <--------Went from 10 to 12 still same size button 
    overflow: hidden; 
    padding: 10px 3px; 
} 
.paginateButtons a { 
    background: #fff; 
    border: 1px solid #ccc; 
    border-color: #ccC#aaa #aaa #ccc; 
    color: #666; 
    margin: 0 3px; 
    padding: 2px 6px; 
} 
.paginateButtons span { 
    padding: 4px 5px; <------Tried this too but going from 2, 3 to 4, 5 made no impact. 
} 

回答

0

你的列表返回每次都相同的10个,因为您所呼叫getAll()代替list()getAll()确实如它所说的那样,它会得到它们的全部,除非你传递一个ID列表来获得。你想要做的是列出事件,它允许你通过params到你的GORM呼叫。

def eventList = Event.list(params) 

一旦你params将结果传递将体现每页的页码和更小的最大值。

正如@cdeszaq所提到的,通过params是一个很好的开始,但理想情况下,你只会通过你想要的确切参数。你可以通过做Event.list(max: params.max, offset: params.offset)来完成。

如果您查看页面的源代码,你会发现,<g:paginate>使用input标签,所以尝试的造型,与其spana

+0

值得一提的是,将原始'params'传递给方法调用可能是一件非常危险的事情,特别是随着事件数量的增长。 – cdeszaq 2012-03-12 20:16:31