Grails排序问题

时间:2010-10-02 17:05:52

标签: sorting grails

我开发了一个grails应用程序。 在这里,我有一个页面接受数据和数据。转到列表操作,触发一个sql,将数据填充到reconciliationInstance对象中并将其显示在list.gsp中。

在我的list.gsp中,我有,

<g:sortableColumn property="access"
    title="${message(code: 'reconciliationInstance.access.label', default: 'Access')}" 
    style="width: 10px" defaultOrder="desc"/>

但是,当我点击“金额”标题时,它会再次返回列表操作。

我在页面中有大约15列,并希望对所有列进行排序。 我在这里遗漏了什么? 为了纠正这个问题,我写了下面的代码。 重定向到操作排序。但我相信这里有些不对劲。

def sort = {
  if (!params.sort) params.sort = "title"
  if (!params.order) params.order = "asc"      
    def reconciliationInstanceList = new ArrayList<Reconciliation>()
reconciliationInstanceList=session["reconciliationInstanceList"]
    order(params.sort, params.order)
   [reconciliationInstanceList: reconciliationInstanceList]
 }

我在会话中保存了reconciliationInstanceList。 任何建议/输入?

我的列表操作代码如下。

def list ={

//参加上一页输入的参数      def odcNum = params.odcNum      def odcDate = params.odcDate
     def date = null

 def reconciliationInstance = new Reconciliation()
 reconciliationInstance.properties=params
 //Validation if all parameters have been entered by the user
     if (reconciliationInstance.validate()) { 

 def results        
 SimpleDateFormat sdfSource = new SimpleDateFormat("dd-MMM-yyyy")    
 if(odcDate instanceof Date) {
 date = sdfSource.format(odcDate);
 }else{     
 date = odcDate
 }

//Query to be fired. I have altered this query a bit. My actual query returns around 15 parameters 
 String odcData="select odc_access from odc_manager where odc_date=to_char('" + date + "') and odc_num like trim('" + odcNum + "')"

 def reconciliationInstanceList = new ArrayList<Reconciliation>()       
 Sql sql = new Sql(dataSource)       
 results = sql.eachRow (odcData)
 {          
 def reconciliation = new Reconciliation()              
 reconciliation.setAccess it.access
 reconciliationInstanceList.add reconciliation
 session["reconciliationInstanceList"]=reconciliationInstanceList
 }

 [reconciliationInstanceList: reconciliationInstanceList]

     }
     else {
         render(view: "search", model: [reconciliationInstance: reconciliationInstance])
     }
 }

BTW我是grails的新手。因此,您会在我的代码中找到一些java。 我的代码中缺少某些东西?因此排序不起作用。输入

2 个答案:

答案 0 :(得分:1)

它应该将您带回到列表操作,但传递给操作的参数将让它知道如何对生成的模型进行排序。

行为是正确的,我假设列表操作中的代码编码不正确...如果您需要其他指导,可能需要包含该代码。

参见样本列表操作

http://www.grails.org/GSP+Tag+-+sortableColumn

答案 1 :(得分:1)

为此找到了解决方法。将排序顺序(params.order)传递给sql查询,让查询进行排序。然后在gsp上显示结果。

如果还有其他方法,请告诉我。