Grails复选框处理

时间:2011-11-19 18:40:53

标签: grails checkbox handle

让我们说,我有这个场景:

enter image description here

但是,假设我有数百个复选框,我需要在提交表单后同时处理所有内容。然后,我需要根据检查的框以及每个块的id

将某些内容保存到BD

所以,我需要这个:

a)一种了解数百个复选框的方法 b)每个复选框应与一个即时传递的ID“链接”,以便执行特定的操作。

我有一个<g:each>标签,写了整个表格,从数据库中读取值。我很感激任何帮助, 谢谢先进,RR

2 个答案:

答案 0 :(得分:2)

您可以将params绑定到域对象或命令对象的List属性。

查看:

<g:each in="${elements}">
    <g:checkBox name="elementSelected[${it.id}]" value="${it.id}" />
</g:each>

命令对象:

class ElementCommand {
    List elementSelected
}

控制器:

def execute = { ElementCommand cmd ->       
    cmd.elementSelected.each {
        if (it) {
            processId(it.toInteger())
        }
    }
}

答案 1 :(得分:1)

在你的gsp中你需要显示所有的复选框:

<g:each in="${model}" status="i" var="invoiceItem">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
    <td>
         <g:checkBox name="invoiceItem_${i}"/>
    </td>
   </tr>
</g:each>

在控制器操作中,您需要将所选复选框映射到域对象

List invoiceList = session.invoiceList
params.each {
    if (it.key.contains("invoiceItem_")){
        if (it.value.contains("on")){
            InvoiceItem invoiceItem = invoiceList.get((it.key - "invoiceItem_") as Integer)
        }
    }

}