Grails分页多个表

时间:2010-10-30 03:31:06

标签: grails pagination paginate

我正在尝试使用2 g:paginate标签在1 gsp上对2个表进行分页。点击1表上的paginate按钮会对两个表分页,因为两个paginate标签都使用相同的'max'和'offset'参数。如何在没有对另一个表进行分页的情况下对1个表进行分页?

提前致谢。

3 个答案:

答案 0 :(得分: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>

欢呼声

答案 1 :(得分:1)

您还可以使用remote-pagination插件,它完成相同的工作。欢呼声。

答案 2 :(得分:0)

Grails分页对于一页中的多个分页完全没用,因为您无法将自定义最大值和偏移量作为属性传递。这就是

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

文档告诉你“max(可选) - 每页显示的记录数(默认为10)。仅在params.max为空时使用”什么? 创造一些我无法控制的东西是什么意思。 良好的编程方式 - 让我输入我的变量或给我选项,然后使用你的默认值!