I'm no longer in love with the various data-bound controls
that shipped with "classic" ASP.NET, such as the DataGrid and
Repeater. Ultimately, the event-based data binding added way too much
indirection and debugging headaches. I find that I'm much happier with the
simpler semantics adopted by the original Active Server Pages and recently
popularized by ASP.NET MVC and Web Pages implementations. To that end, I'm
going to construct my HTML pretty much how I want it to look, and then use a simple
foreach loop to populate the contents of the table.
For styling the table, I borrowed one of the nice templates
from this Top
10 CSS Table Designs article, which has some nice options. The end result
is some very clean and readable code:

You can view the actual output here:
http://aspalliancefiles.s3.amazonaws.com/books.htm
It looks like this:
