2015-12-02 62 views
0

我剛剛開始使用grails,並想按降序對日期進行排序。我試過這個:如何在grails列表中排序?

<g:sortableColumn property="eventStartDate" defaultOrder="asc" title="${message(code: 'event.eventStartDate.label', default: 'Event Start Date')}" /> 

但是這並不排序列表。控制器如下所示:

def list = { 
    params.max = Math.min(params.max ? params.int('max') : 10, 100) 
    [eventInstanceList: Event.list(params), eventInstanceTotal: Event.count()] 
} 

如何按降序對eventStartDate進行排序?

+0

看起來好像沒什麼問題。你可以確保你是否發送這些參數:sort = eventStartDate&order = desc?除此之外,列表(params)是正確的。 – renz

回答

0

它可能沒有工作的原因是:

  1. Event.list(PARAMS)獲取的一切。
  2. 您正在按升序排序(asc),但您說您想按降序排列(desc)。

解決方案: 更改您的控制器動作的第二行:

[eventInstanceList: Event.list(order: "desc"), eventInstanceTotal: Event.count()] 

更多信息: http://grails.github.io/grails-doc/2.2.1/ref/Domain%20Classes/list.html

Event.list(params)返回域對象的每一件事情。它不做任何過濾。改爲使用findAllBy*findBy*createCriteria

例子:

Event.findAllByNameAndDate(params.get("name"), params.get("date"), [max: 10, order: "desc"]) 

更多信息:
grails domain class .list() method with params