HTML_Table offers an interface for
create a HTML table. You can work with the table like a spreadsheet.
Instead of working with HTML code and linear adding of cells, you
can address and fill cells independend of there position. There is no
different, whether you start with fill a cell at the beginning, in the
middle or at the end of the table, a row or a column.
The autoGrow and autoFill value
The autoGrow flag
Normaly, you would define a table with a constant number
of rows and columns. But sometimes, you does not know, how many
rows or columns you need: ie. transforming user input or the
result of a database query to an HTML table.
In this case, you should
enable
the autoGrow feature.
In this mode, HTML_Table adds new
rows or columns automatically, if you use a cell address located in a
not existing row or column.
The autoFill value
If you create a table of data, sometimes you have not to fill
all cells with different values. Perhaps you do not know the
value for a cell, or you want to insert a default value - ie. retrieving
data about users. Not every user has a mobile, a email address etc.,
in this case, an "n/a" should be inserted into that
specific cell.
So, simply
define"n/a" as autoFill value and fill only
the cells where data exist. You need not to fill every cell; unfilled
cells contain automatically an "n/a".
Creating a table
The demonstation data
Our HTML table to create should contain the following data:
Let us now start by creating a new instance of
HTML_Table. The table
should be 600 pixel wide. We do not know
the quantity of the data to insert into the table -
so we enable the autoGrow feature.
Unfilled cells should contain an "n/a".
Now we want to define the cells in the first row and column
as header cells. It should looks like a spreadsheet
application, so we want to use the color "silver" as the
background colour for each header cell. The first row
contains a column headline, the first column the number
of the data set row.
If you want to divide your tables into thead, tfoot and
tbody groups,
you need to get table objects using getHeader(),
getFooter() and getBody(),
which you can then use like the normal table object.
In this example, there is no content set for the tfoot group.
Therefore, only thead and tbody will be rendered.
Note:
The rendering order is thead, then tfoot and as the last group
tbody. This is not a bug but intended behaviour because that's
the way it is defined in the (X)HTML Standard.