рендеринг нескольких сортируемых таблиц на странице gsp? - PullRequest
0 голосов
/ 08 сентября 2011

Я хочу создать страницу gsp, которая содержит несколько таблиц. Обратите внимание, что под термином «таблицы» я имею в виду графические таблицы (теги), а не таблицы базы данных. Таблицы должны иметь сортируемые заголовки

Если страница gsp содержит только одну таблицу, легко использовать существующие теги sortableColumn и paginate. Они вставляют соответствующие записи в карту «params» (например, «sort = column4711»). Однако, если на странице задействовано несколько графических таблиц, это не так просто. Проблема в том, что связанный контроллер не знает, с какой таблицей связаны параметры (то есть, если есть запись карты "sort = column4711", контроллер не знает, к какой таблице он принадлежит).

В настоящее время я думаю о следующем решении, которое я считаю довольно некрасивым:

<div class="list">
                <table>
                    <thead>
                        <tr>

                            <g:sortableColumn property="id" title="${message(code: 'user.id.label', default: 'Id')}" />

                            <g:sortableColumn property="password" title="${message(code: 'user.password.label', default: 'Password')}" />

                            <g:sortableColumn property="userId" title="${message(code: 'user.userId.label', default: 'User Id')}" />

                            <g:sortableColumn property="userName" title="${message(code: 'user.userName.label', default: 'User Name')}" />


                            <g:sortableColumn property="id" title="${message(code: 'bookDetails.id.label', default: 'Id')}" />

                            <th><g:message code="bookDetails.bookId.label" default="Book Id" /></th>

                            <g:sortableColumn property="pages" title="${message(code: 'bookDetails.pages.label', default: 'Pages')}" />

                            <g:sortableColumn property="price" title="${message(code: 'bookDetails.price.label', default: 'Price')}" />



                            <g:sortableColumn property="id" title="${message(code: 'book.id.label', default: 'Id')}" />

                            <g:sortableColumn property="author" title="${message(code: 'book.author.label', default: 'Author')}" />

                            <g:sortableColumn property="bookId" title="${message(code: 'book.bookId.label', default: 'Book Id')}" />

                            <g:sortableColumn property="bookName" title="${message(code: 'book.bookName.label', default: 'Book Name')}" />

                            <g:sortableColumn property="category" title="${message(code: 'book.category.label', default: 'Category')}" />

                        </tr>

                    </thead>
                    <tbody>
                    <g:each in="${userInstanceList}" status="i" var="userInstance">
                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">

                            <td><g:link action="show" id="${userInstance.id}">${fieldValue(bean: userInstance, field: "id")}</g:link></td>

                            <td>${fieldValue(bean: userInstance, field: "password")}</td>

                            <td>${fieldValue(bean: userInstance, field: "userId")}</td>

                            <td>${fieldValue(bean: userInstance, field: "userName")}</td>

                        </tr>
                    </g:each>

                    <g:each in="${bookDetailsInstanceList}" status="i" var="bookDetailsInstance">
                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">

                            <td><g:link action="show" id="${bookDetailsInstance.id}">${fieldValue(bean: bookDetailsInstance, field: "id")}</g:link></td>

                            <td>${fieldValue(bean: bookDetailsInstance, field: "bookId")}</td>

                            <td>${fieldValue(bean: bookDetailsInstance, field: "pages")}</td>

                            <td>${fieldValue(bean: bookDetailsInstance, field: "price")}</td>

                        </tr>
                            </g:each>

                    <g:each in="${bookInstanceList}" status="i" var="bookInstance">
                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">

                            <td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "id")}</g:link></td>

                            <td>${fieldValue(bean: bookInstance, field: "author")}</td>

                            <td>${fieldValue(bean: bookInstance, field: "bookId")}</td>

                            <td>${fieldValue(bean: bookInstance, field: "bookName")}</td>

                            <td>${fieldValue(bean: bookInstance, field: "category")}</td>

                        </tr>
                    </g:each>




                    </tbody>
                </table>
            </div>

        </div>
   <body>

поэтому, пожалуйста, помогите нам решить проблему

1 Ответ

0 голосов
/ 10 сентября 2011

Есть плагин для удаленного разбиения на страницы. У меня были некоторые проблемы, которые я должен был исправить, но у меня нет его модифицированной версии (и я давно это использовал) В основном это делает вызовы Ajax вместо рендеринга всей страницы. Вы получаете теги для remoteSortableColumn и remotePaginate

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