Проблема с разбиением на страницы: я не вижу, как список разбит на разделы, он показывает все на каждой странице - PullRequest
0 голосов
/ 12 марта 2012

Вот страница, на которой я хочу видеть 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]                  
        }
    }

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

/
.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.
}

1 Ответ

0 голосов
/ 13 марта 2012

Ваш список каждый раз возвращает одни и те же 10, потому что вы звоните getAll() вместо list().getAll() делает именно то, что говорит, он получает их все, если вы не передадите список идентификаторов для получения.То, что вы хотите сделать, это перечислить события, которые позволяют вам передавать params на ваш вызов GORM.

def eventList = Event.list(params)

После того, как вы введете params, результаты будут отражать нумерацию страниц и меньше макс..

Как уже упоминалось @cdeszaq, передача params - это хороший способ оторваться от земли, но в идеале вы должны передавать только те параметры, которые хотите.Это можно сделать, выполнив Event.list(max: params.max, offset: params.offset).

Если вы просмотрите исходный код страницы, то обнаружите, что <g:paginate> использует теги input, поэтому попробуйте стилизовать их вместо span или * 1018.*.

...