我正在使用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> </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>
还有另外两张桌子。每当我点击前端的列时,表格都没有正确排序。请纠正我在哪里出错。
答案 0 :(得分:0)
排序通常发生在服务器端。因此,排序参数被传递到控制器,查询函数采用排序参数来对数据进行排序。视图层不进行排序。您的控制器应返回已排序的数据。在您的示例中,您需要添加代码以在通过render方法返回数据之前对数据进行排序。