如何在Grails视图中对列进行排序

时间:2015-04-04 11:32:23

标签: sorting grails

在索引方法中,我列出了特定玩家的记录。

e.g。

def index() {
    Player player = Player.get( params.playerId)
    def records = Record.findAllByPlayer(player, params:params)

    [records: records,  playerInstance: player, params: params]
}

这样可行,但视图中没有可排序的列。

如何查找需要排序的列,以及如何在findAllByXXX中使用此信息?我已经搜索了谷歌,但没有找到任何不涉及简单" Books.list(params)"图案。

在视图中,我有sortableColumns:

<g:sortableColumn property="createdAt" title="${message(code: 'paymentRecord.created.label', default: 'Created at')} "
                  params="${params}" style="width: 15%;"/>

我看到URL末尾的参数,例如:

 /index/1?sort=credit&order=desc

2 个答案:

答案 0 :(得分:2)

您需要Record.findAllByPlayer(player, params)代替Record.findAllByPlayer(player, params:params)

您可以看到示例here in grails documentation。文档中的一个例子是

def results = Book.findAllByTitle("The Shining",
              [max: 10, sort: "title", order: "desc", offset: 100])

答案 1 :(得分:2)

list方法中可用的分页和排序参数也可用于动态查找器。

所以你可以这样做,如果你在params中有排序和订单。

Record.findAllByPlayer(player, params)

Record.findAllByPlayer(player, [max: xx, offset: xx, sort: "name", order: "desc"])