Grails, нумерация нескольких таблиц - PullRequest
3 голосов
/ 30 октября 2010

Я пытаюсь разбить страницы на 2 таблицы на 1 gsp, используя теги 2 g: paginate.Нажатие кнопки paginate на 1 таблице разбивает на страницы обеих таблиц, поскольку оба тега paginate используют одинаковые параметры 'max' и 'offset'.Как я могу разбить на страницы в 1 таблице, не разбивая на другие таблицы?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 30 октября 2010

Вот пример использования дополнительных параметров в теге paginate.Foo и Bar - это два класса домена со строковым свойством name.Я создал 50 каждого в Bootstrap.groovy.

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>

cheers

Lee

1 голос
/ 27 февраля 2012

Вы также можете использовать плагин remote-pagination , который выполняет ту же работуПриветствия.

0 голосов
/ 21 декабря 2012

Пагинация Grails совершенно бесполезна для многократного разбиения на страницы на одной странице, потому что вы не можете передать пользовательский максимум и смещение в качестве атрибута. Вот причина, по которой

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

И документация сообщает вам "max (необязательно) - количество записей, отображаемых на странице (по умолчанию 10). Используется ТОЛЬКО, если params.max пусто" ЧТО? В чем смысл создания чего-то, что я не могу контролировать. Хороший способ программирования - позвольте мне ввести мои переменные или задать параметры, а затем использовать значения по умолчанию!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...