2011-11-08 87 views
0

如何在Grails中实现一个表格单元格,它会有一个按钮并按下它将会改变同一行单元格中的数据?可以说,表只有id,赋值,接受(是,否)字段。接受的值默认为“否”,当您点击“接受”按钮时,它会变为“是”。如何在Grails中实现响应表?

我应该使用Grails UI数据表还是使用jQuery Grid?

回答

1

您可以使用submitToRemote按钮并使用update标记更新当前表格行。 E.g:在您的index.gsp

<table> 
<g:each in="${yourDataList}" var="data"> 
<tr id="dataRow${data.id}"> 
    <g:render template="tableRow" /> 
</tr> 
</g:each> 
</table> 

如果您_tableRow.gsp模板是一样的东西:

<td>${data.id}</td> 
<td>${data.booleanValue}</td> 
<td><g:submitToRemote action="updateAction" id="${data.id}" update="dataRow${data.id}" /></td> 

update属性值是一样的<tr>index.gsp的。 你的控制器有一个动作updateAction

def updateAction = { 
    Data data = Data.get(params.id) 

    // your business logic 
    data.booleanValue = false; 

    data.save(flush: true); 

    render(template: "tableRow", model: [data: data]); 
} 

显然还有其他的可能性,但是这可能是一个选择。

+0

我不确定我了解这一点。你为什么在视图中渲染模板?不应该只是在控制器操作中完成?而不是g:submitToRemote标签更新属性只是为了定义你正在改变的div? – drago

+0

我尝试了不同的youre建议组合,但都没有工作。我已经通过管理来正确渲染视图,但按钮没有响应。 – drago

+1

对不起,也许我已经理解你了。这段代码只是显示了如何创建一个表格,用户可以在每行上执行一些操作(例如接受任务),并根据操作改变页面上的某些内容(在这种情况下,表格行将被重新加载从服务器和gsp逻辑处理您的更改,然后:例如更改按钮文本)。 – Chris