 <p>You will want to use an asp.net control called a GridView. When rendered, it becomes an HTML table. It can then be manipulated by CSS and Javascript.</p> <p><a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx</a></p> <p>GridView not being an option, try using a Literal:</p> <pre><code>&lt;asp:Literal ID="LiteralTable" runat="server"&gt;&lt;/asp:Literal&gt; </code></pre> <p>Codebehind:</p> <pre><code>StringBuilder sb = new StringBuilder(); sb.Append("&lt;table&gt;"); for (int i = 1; i &lt; 15; i++) { sb.Append("&lt;tr class=\"clickable\"&gt;&lt;td&gt;" + FirstColumn[i] + "&lt;/td&gt;" + "&lt;td&gt;" + SecondColumn[i] + "&lt;/td&gt;&lt;/tr&gt;"); sb.Append("&lt;tr class=\"expandable\"&gt;&lt;td&gt;Edit&lt;/td&gt;" + "&lt;td&gt;More Info&lt;/td&gt;&lt;/tr&gt;"); } sb.Append("&lt;/table&gt;"); LiteralTable.Text = sb.ToString(); </code></pre> <p>And then work your javascript (or jquery) magic:</p> <pre><code>$(".clickable").click().next().show(); </code></pre> <p>And in this case just load your database into the array before calling the stringbuilder!</p>