鉴于数据量可变,我想创建一个每行固定列数的表。例如,我可能只想要每行四列:
<table>
<tr>
<th>COLUMN_1</th> <th>COLUMN_2</th> <th>COLUMN_3</th> <th>COLUMN_4</th>
</tr>
<tr>
for(-some code here-) {
<td>-some output from the loop-</td>
}
</tr>
</table>
但正如您所看到的,如果数据由10个元素组成,则表行将超过我的四列。
如何输出数据以使列数保持不变并根据需要创建新行?
答案 0 :(得分:1)
Grails(和Groovy)的一大优点是它的可扩展性。开发人员往往将他们的思维限制在他们的工具和框架当前提供的内容上。我经常发现,如果将其嵌入到框架中,那么考虑一个理想的,更优雅的解决方案是有帮助的。这通常给我一个很好的方向,我想要实现它。在您的场景中,我更喜欢在元素组中迭代集合的GSP标记,以便您可以处理每组元素。如下所示:
<table>
<lm:eachGroup size="4" var="row" in="${myCollection}">
<tr>
<g:each var="cell" in="${row}">
<td>${cell}</td>
</g:each>
</tr>
</lm:eachGroup>
</table>
当然,那不存在......所以我创造了它!它可以通过提供一个标志来填充最后一组元素来改进,这样你就可以得到一个完整的行,但我会把它留给读者练习。 ; - )
要在项目中使用我的taglib中的<lm:eachGroup>
,您可以克隆我的Grails插件的git存储库:
$ git clone https://github.com/erturne/leapingmindtaglib
打包插件:
$ grails package-plugin
然后将其安装到您的应用中。
顺便说一下,我做了类似的事情,将一个eachGroup()方法添加到List。
答案 1 :(得分:-1)
HTML中没有任何内容可以让您创建基于列的表而不是基于行的表。
你需要计算你完成循环的次数,并在每第四次循环后开始一个新行。