Table Controls and .NET DataGrid Controls

There are three main "templated, databound controls" in .NET: the Repeater, the DataList, and the DataGrid.  All three allow you to define a user interface for an arbitrary number of data items.

The Repeater control has no "built in" layout restrictions or features; it just allows you to define what the header, item, alternate item, separator, and footer sections look like.  The DataGrid control has "built in" support for displaying data in a table / grid.  This means that you can specify things like column width and justification without worrying about <tr> tags, <td> tags, and HTML formatting attributes.  However, it also imposes certain restrictions.  For example, every data item is automatically displayed in its own row (i.e. <tr>).  When you want to build a "table" that is not completely tabular, using the DataGrid becomes more difficult or outright unfeasible.

The Table components created by Iron Speed Designer use the .NET Repeater control internally.  This allows all of the layout commands (<tr>’s, <td>’s, align=Right, etc.) to be specified together, separate from the data binding.  This also means that Iron Speed Designer table components support semi-tabular and non-tabular layouts, which DataGrids do not easily handle.

The DataGrid control has "built in" support for paging, sorting, and filtering, but the default support requires that you retrieve all of the database records from the database, and then sort, paginate, and filter them in the Data Access Layer.  This technique, called in-memory paging, is impractical for most applications.  Repeaters also have no built in support for paging, sorting, and filtering.