[SalesForce] the difference between pageBlockTable, dataTable and repeat

I am not sure if this is against the forum policy but just wanted to know from experienced people on what is the difference between pageBlockTable, dataTable and repeat?

This is what I have found so far on the interenet:

apex:pageBlockTable

1) uses salesforce styling
2) No need to specify the headers
3) mandatory attribute "value".

apex:dataTable

1) Need to specify the headers
2) we can specify custom style classes.
3) No mandatory attribute "value" unlike in pageblockTable

I could not find much info on the apex:repeat

Best Answer

The four basic types, apex:pageBlockTable, apex:dataTable, apex:dataList, and apex:repeat are all basically the same thing, but present different renderings.

apex:pageBlockTable represents a table formatted and styled to look like a related list table.

apex:dataTable is an unstyled table suitable for use anywhere outside of a apex:pageBlock (but may be used within one).

apex:dataList renders a ul or ol element (unordered or ordered list, respectively), with li (list item) elements comprising the rows.

apex:repeat allows any arbitrary output based on a template. The four elements require value and var attributes, iterate over a collection of some sort, may generally be nested inside each other, and are limited to 1,000/10,000 rows of output, depending on the apex:page's readOnly attribute.

Edit: As pointed out in the comment, the main difference with apex:pageBlockTable, compared to the other three, is it must appear in a apex:pageBlock or apex:pageBlockSection, while the other types can be rendered anywhere that Visualforce is allowed. There's a very specific limitation about apex:pageBlock not being available in email templates, as well, so you'd naturally have to use one of the other three types of iterators.