ASPTreeView with aligned columns in the nodes

Category NameDescriptionDate CreatedPrice Range
Main Category 3Category with many subcategories5/4/2005$100-$2500
Child Category 2What is this?5/6/2004$1400-$1700
Child Category 1This is used rarely1/2/2006$1000-$2000
A small categoryno description1/6/2000no price range
Test categoryanother test5/6/2006test
Main Category 2Category for large products1/14/2006$1000-$1500
Subcat 2 1Category for expensive products8/2/2006$1200-$1400
Main Category 1Category for small products1/15/2006$100-$200
Subcategory 1 2Category for tests3/1/2006$180-$200
Last subcategoryCategory very small stuff4/5/2006$100
Subcategory 1 1Category used ofthen2/10/2006$125-$175

The html for each node is a table, that has the width of the first column
calculated according to the level of the node:

iAddWidth = 200 - (iLevel * 15);

sHtml = "<table cellspacing='0' cellpadding='0' border='0'><tr>
<td class='ob_column' style='width: " + iAddWidth.ToString() + "px'>" + sCategoryText + "</td>
<td class='ob_column' style='width:200px;'>" + sDescription + "</td>
<td class='ob_column' style='width:100px;' align='left'>" + sDateAdded.ToShortDateString() + "</td>
<td class='ob_column' align='left'>" + sPriceRange + "</td></tr></table>";


Also, you have to declare 2 CSS classes, that are used for the columns:
		        
        td.ob_column {	        
	        color:navy;
	        FONT: 8pt Tahoma; 
	        vertical-align:middle; 
	        border-bottom: 1px solid #cccccc
        }
        td.ob_header {	        
	        color:navy;
	        FONT: 9pt Tahoma; 
	        font-weight: bold;
	        vertical-align:middle; 
	        border-bottom: 1px solid #cccccc
        }