The grid tag is used to output each row of a multirow datasource as a cell of an n column grid.
<!-- Begid grid layout, i.e. <table> -->
<table>
<grid name="datasource" cols="n">
<if @datasource.col@ eq 1>
<!-- Begin row, i.e. <tr> -->
<tr>
</if>
<!-- Cell layout, i.e. <td>...</td> -->
<td>
<!-- Cells may be unoccupied at the end. -->
<if @datasource.rownum@ le @datasource:rowcount@>
...
@datasource.variable@
...
</if>
<else>
<!-- Placeholder to retain cell formatting -->
</else>
</td>
<if @datasource.col@ eq "n">
<!-- End row, i.e. </tr> -->
</tr>
</if>
</grid>
Rows from the data source are output in column-first order. For example, if a datsource has 10 datasources and the grid has 3 columns, the rows from the datasource will appear in the following order:
| 1 | 5 | 9 |
| 2 | 6 | 10 |
| 3 | 7 | |
| 4 | 8 |
The @datasource.row@ variable can be used to band grid rows:
<if @datasource.col@ eq 1 and @datasource.row@ odd>
<tr bgcolor=#eeeeee>
</if>
<if @datasource.col@ eq 1 and @datasource.row@ even>
<tr bgcolor=#ffffff>
</if>
Note that this is different from the multiple tag, where the @datasource.rownum@ is used for this effect.