ASP.NET How to recreate the following HTML in a Gridview
<p>Hey I am trying to recreate the following HTML</p>

<pre><code>&lt;table border="0" cellspacing="0" cellpadding="2" width="100%" id="productListTable"&gt;
    &lt;tr&gt;
        &lt;th rowspan="2"&gt;Product Name&lt;/th&gt;
        &lt;th rowspan="2" &gt;Pack Size&lt;/th&gt;
        &lt;th rowspan="2" &gt;Trade Price&lt;/th&gt;

        &lt;th colspan="2"  style="border:none;"&gt;Discount&lt;/th&gt;
        &lt;th rowspan="2" &gt;Actual Price&lt;/th&gt;
        &lt;th rowspan="2"&gt;Stock&lt;/th&gt;
        &lt;th rowspan="2"&gt;Quantity&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr class="sub"&gt;
        &lt;th &gt;PLC&lt;/th&gt;

        &lt;th &gt;Total&lt;/th&gt;
    &lt;/tr&gt;
</code></pre>

<p>In my Gridview the first tr is no problem as this can just be standard header text in my columns but I am wondering how I can add this sub tr</p>

<pre><code>&lt;tr class="sub"&gt;
    &lt;th &gt;PLC&lt;/th&gt;

    &lt;th &gt;Total&lt;/th&gt;
&lt;/tr&gt;
</code></pre>

<p>And also how to add this style, to my existing column</p>

<pre><code>&lt;th colspan="2"  style="border:none;"&gt;Discount&lt;/th&gt;
</code></pre>

<p>Heres my gridview at the moment</p>

<pre><code>&lt;asp:GridView ID="productListTable" runat="server" DataSourceID="srcProductListPerCustomer" AutoGenerateColumns="False" AlternatingRowStyle-CssClass="tr_dark"  HeaderStyle-CssClass="header_req" BorderWidth="0px" GridLines="None" AllowPaging="true" PageSize="25" EmptyDataText="No records." AllowSorting="false" Width="100%" DataKeyNames="product_ID_key" OnRowDataBound="productListTable_RowDataBound" OnRowCommand="productListTable_RowCommand"  &gt;         
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Product Name" HeaderStyle-Width="250px" SortExpression="productName" ItemStyle-CssClass="product_name" &gt;
                &lt;ItemTemplate&gt;   
                &lt;asp:Label ID="ProductNameField" runat="server" Text='&lt;%# Eval("productName").ToString() %&gt;'&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Pack Size" HeaderStyle-Width="70px" SortExpression="packSize"&gt;
                &lt;ItemTemplate&gt;  
                &lt;asp:Label ID="PackSizeField" runat="server" Text='&lt;%#  Eval("packSize").ToString()%&gt;'&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Trade Price" HeaderStyle-Width="130px" SortExpression="address"&gt;
                &lt;ItemTemplate&gt;   
                &lt;asp:Label ID="TradePriceField" runat="server" Text='&lt;%#  DisplayMoney(Eval("tradePrice").ToString())%&gt;'&gt;&lt;/asp:Label&gt;
                &lt;asp:Label ID="TradePriceFieldHidden" runat="server" Text='&lt;%#  Eval("tradePrice").ToString()%&gt;' Visible="false"&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Discount" HeaderStyle-Width="60px" SortExpression="discount"&gt;
                &lt;ItemTemplate&gt;   
                &lt;asp:Label ID="DiscountField" runat="server" Text='&lt;%# Eval("discount").ToString() + "%" %&gt;'&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Actual Price" HeaderStyle-Width="130px" SortExpression="actualPrice"&gt;
                &lt;ItemTemplate&gt;   
                &lt;asp:Label ID="ActualPriceField" runat="server" Text='&lt;%#  DisplayMoney(Eval("actualPrice").ToString())%&gt;'&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
    &lt;Columns&gt;                         
            &lt;asp:TemplateField HeaderText="Stock" HeaderStyle-Width="130px" SortExpression="stock_indicator"&gt;
                &lt;ItemTemplate&gt;   
                &lt;asp:Label ID="StockField" runat="server" Text='&lt;%# DisplayStockLevel(Eval("stock_indicator").ToString()) %&gt;'&gt;&lt;/asp:Label&gt;
                &lt;/ItemTemplate&gt;                     
            &lt;/asp:TemplateField&gt; 

    &lt;/Columns&gt;
     &lt;Columns&gt;  

    &lt;asp:TemplateField HeaderText="Quantity"&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:TextBox runat="server" ID="txtQuantity" Columns="5"&gt;&lt;/asp:TextBox&gt;&lt;br /&gt;
                        &lt;asp:LinkButton runat="server" ID="btnRemove" Text="Remove" CommandName="Remove" CommandArgument='&lt;%# Eval("product_ID_key") %&gt;' style="font-size:12px;" Visible="false"&gt;&lt;/asp:LinkButton&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
    &lt;/Columns&gt;
    &lt;HeaderStyle CssClass="header_req" /&gt;
    &lt;AlternatingRowStyle CssClass="tr_dark" /&gt;
    &lt;PagerStyle CssClass="pagination" /&gt;
    &lt;PagerSettings PageButtonCount="3" FirstPageText="First" LastPageText="Last" NextPageText="Next" PreviousPageText="Previous" Mode="NumericFirstLast" /&gt;      
&lt;/asp:GridView&gt;
</code></pre>
