每个gsp页面呈现多个可排序表格?

时间:2011-09-08 10:00:30

标签: grails

我想创建一个包含多个表的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 :(得分:0)

有一个远程分页插件。它有一些我必须解决的问题,但我没有我的修改版本(自从我使用它已经有一段时间了)。基本上它会调用Ajax而不是渲染整个页面。你得到了remoteSortableColumn和remotePaginate

的标签