2011-11-08 62 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