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

How to sort columns in Grails view

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

例如

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

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

这有效,但 none 的可排序列在视图中有效。

如何查找需要排序的列,然后如何在 findAllByXXX 中使用此信息?我搜索了 Google 但没有找到任何不涉及简单 "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

您需要 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])

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

因此,如果您在参数中有可用的排序和顺序,那么您可以这样做。

Record.findAllByPlayer(player, params)

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