Grails 2.1.1 - 来自子列表的表没有在父显示视图中排序-arrghh

时间:2012-11-21 05:54:14

标签: grails gorm grails-2.0 sortable-tables

对如何处理以下情况有问题或缺乏理解;

我有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中传递投资组合参数,这一切都可以正常显示并完美显示。太棒了。

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

如何让这些列正确排序?我应该迭代 - 我需要或希望表中的所有列都是可排序的。

到目前为止我做了什么,没有奏效: 是<g:sortableColumn在视图中,域类Portfolio使用List发布,比较器在视图中内联,其他很多东西。

我哪里错了?我是否需要在组合控制器下编写一个新方法来处理列表操作和params排序,或者我可以在视图中执行某些操作来解决此问题。

示例列表视图 - 为简洁而缩减

<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()]

完全迷失并厌倦了搜索。欢迎所有建议。

1 个答案:

答案 0 :(得分:0)

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

static mapping = {
    sort "publicationName"
}

在您的“出版物”类中,如果您希望将其作为“出版物”按字段排序的字段。