假设您有一个显示书籍列表的表格(如索引一样),并且您希望在名为“已售出”的列中进行更改(例如,复选框)。 因此,一旦完成“检查”已售出的书籍,就要将其保存在数据库中。如何将该列表发送回控制器并进行更新?
所以,代码就是这样,在控制器中:
def aMethod(){
...
[bookInstanceList: myBookList]
}
在GSP中:
<g:each in="${bookInstanceList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "author")}</g:link></td>
<td><g:checkBox name="sold" value="${bookInstance?.sold}" /></td>
<td>
</tr>
</g:each>
这个想法是通过复选框让用户更改该书中的“已售出”值。如何保存我的新bookInstanceList?
非常感谢
答案 0 :(得分:1)
从我看到你想要在用户点击复选框时动态更新后端?
如果是这样,那么你需要一个这样的ajax调用:
<g:each in="${bookInstanceList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "author")}</g:link></td>
<td><g:checkBox name="sold" value="${bookInstance?.sold}" onChange="TriggerFilter(this)" /></td>
<td>
</tr>
</g:each>
<g:javascript>
function TriggerFilter(e) {
if (e.checked==true) {
$.get('<g:createLink action='Your_Action' controller="YourController"
params="[ filterbind: ''+attrs.filterbind+'',term:''+attrs.term+'' ]"/>'
,function(data){
$('#FilterField').hide().html(data).fadeIn('slow');
});
}else{
$('#FilterField').hide().html('').fadeIn('slow');
}
}
</g:javascript>
<div id="FilterField" class="filterField">
{Result returned in here}
</div>
你需要将e.value放入params看看grails java script get createLink我的插件中有很多例子:
https://github.com/vahidhedayati/ajaxdependancyselection/tree/master/grails-app/views
我建议在线查看/阅读如何使用
您可能希望将get更改为:
how to use grails ${createLink} in javascript
var url = '${createLink(controller:'Books', action: 'update')}' + e.value ;
$.get(url ,function(data){
$('#FilterField').hide().html(data).fadeIn('slow');
});
}else{
$('#FilterField').hide().html('').fadeIn('slow');
}
}