如何在控制器传递的gsp包含sql行中对表进行排序

时间:2015-01-29 00:44:20

标签: javascript grails groovy gsp

我正在使用Grails的sortablecolumn功能来动态排序gsp中的表列。我有3个表包含由控制器代码传递的sql行。

我的控制器代码是:

def ABC{
def A= AService.a()
def B=BService.b()
def C=CService.b()
render(view:list,model:[A:A,B:B,C:C])
}

AService,BService和CService包含sql代码并返回行。

我的list.gsp代码是:

<body>
        <div class="body">
            <h1>ABC</h1>
            <g:if test="${flash.message}">
            <div class="message">${flash.message}</div>
            </g:if>
            <div class="list">
                <table>
                <thead>
                    <tr>
                        <g:sortableColumn property="name" title="NAME" />
                        <g:sortableColumn property="id" title="ID" />


                        <th>&nbsp;</th>
                    </tr>
                </thead>
                <tbody>
                <g:each in="${A}" status="i" var="thisRecord">
                    <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
                        <td>${thisRecord.name}</td>
                        <td>${thisRecord.id}</td>


                    </tr>
                </g:each>
                </tbody>
                </table>
                </div>
        </div>
    </body>
</html>

还有另外两张桌子。每当我点击前端的列时,表格都没有正确排序。请纠正我在哪里出错。

1 个答案:

答案 0 :(得分:0)

排序通常发生在服务器端。因此,排序参数被传递到控制器,查询函数采用排序参数来对数据进行排序。视图层不进行排序。您的控制器应返回已排序的数据。在您的示例中,您需要添加代码以在通过render方法返回数据之前对数据进行排序。