2011-09-08 81 views
0

我想創建一個包含多個表的gsp頁面。 請注意,術語「表」我的意思是圖形表(標籤)而不是數據庫表。 表格應具有可排序標題爲每個gsp頁面呈現多個可排序表格?

如果一個gsp頁面只包含一個表格,可以很容易地使用現有的sortableColumn和paginate標籤。 它們將相關條目插入「參數」映射(例如「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> 

所以請指導我們解決問題

回答

0

有一個遠程分頁插件。它有一些我必須解決的問題,但我沒有修改它的版本(並且從我使用它開始已經有一段時間了)。基本上它會進行Ajax調用而不是渲染整個頁面。你得到remoteSortableColumn和remotePaginate的標籤