0

我有 2 个域

Portfolio
  static hasMany [publications: Publication]
  String portfolioName

Publication
  static belongsTo = [portfolio: Portfolio]
   String publicationName
   String pubcontent
   String published
   String publisheddate

我想要发布列表视图g:rendertmpl投资组合域的显示视图中的新部分视图。如果我调整发布列表视图以在portfolioInstance?.publications 中传递投资组合参数,这一切都可以正常工作并完美显示。

问题: 当我想对出版物列表视图中的表标题进行排序时,排序会移动数据但不遵循任何排序顺序。我已经尝试了所有领域技巧,例如列出出版物、比较器等,我已经搞砸了使用修改视图.sort{a,b-> a.id.compareTo(b.id)}但仍然没有正确排序它们。

如何让这些列正确排序?重申一下,我需要或希望表中的所有列都是可排序的。

到目前为止我做了什么但没有奏效:

  • <g:sortableColumn在视图中
  • 领域类 Portfolio used 列出出版物
  • 视图中的内联比较器
  • 许多其他的事情。

我哪里错了?我是否需要在投资组合控制器下编写一个新方法来处理列表操作和参数排序,或者我可以在视图中做些什么来解决这个问题。

示例列表视图 - 为简洁起见减少

<g:each in="${portfolioInstance?.publications }" status="i" var="pubs">
<g:link controller="publication" action="show" id="${publicationInstance.id}">${fieldValue(bean: publicationInstance, field: "publicationName")}</g:link>

<td><g:formatDate date="${pubs.publisheddate}" /></td>

<td>${fieldValue(bean: publicationInstance, field: "published")}</td>

控制器

标准 grails 生成控制器

def show(Long id) {
    def portfolioInstance = Portfolio.get(id)
    portfolioInstance.properties=params

def list(Integer max) {
    params.max = Math.min(max ?: 10, 52)
    if (params.sort==null){
        params.sort = "published"

    }
    [publicationInstanceList: Publication.list(params), publicationInstanceTotal: Publication.count()]
4

1 回答 1

0

请参阅GORM 文档的第 6.5.2 节(“默认排序顺序”)。你只需要添加

static mapping = {
    sort "publicationName"
}

如果您希望将其作为出版物排序依据的字段,请在您的出版物类中。

于 2012-11-21T06:10:21.823 回答