I would suggest for such additional customizing, you use a list view.
And your heading requirements look NOTHING like a heading from a database table. So, a gridview (or better listview) can render the repeating rows of data.
But that heading part? That's not a database heading of columns at all - not even close.
This suggests that the top part can't really be a heading for the listview/gridview.
However, I do suggest that listview would be much better here then a gridview. the reason is both the rows of data, and the heading part can be markup with a listview.
In the gridivew, you could even layout that top part OUTSIDE of the lv, and then consider if it worth the efforts to move that layout into the lv, or just leave it on top.
So, I would just layout the top part as standard web layout like anything else you wish to have on that page.
Then below, you could use a listview/grid view for the repeating rows of data.
You might then be able to take what you laid out separate for the top part, and drop that into the listview, but it probably not worth the trouble.
Given the layout for the top part - I leaning towards the idea of building that separate. It also not clear how normalized the data source is for this, and how many tables are involved. So, boatloads of issues and details here, that would amount to 50 more pages of questions.
However, a list view would be a better choice for such high degrees of customizing. I would thus spend some time googling list view examples for asp.net.
but, that top part is a best as a separate part, and task for you to create. (so it really a form type of layout, and not some "repeating" set of row data).
however, for the bottom repeating rows of data? Listview or grid view would suffice. But the top part is not any kind of classical database heading based on column names with simple rows of data repeating below. that's going to be just pure HTML layout, and you have to do that as such like laying out any other web page.
One might even just use a plain jane HTML table for that part.
Note how listview allows this in the heading layout:
<LayoutTemplate>
<h2>My Cooling heading area layout</h2>
<div style="width:140px;border:solid;background-color:aquamarine;float:left">
Holiday description
<asp:TextBox ID="TextBox1" runat="server" BackColor="Transparent"></asp:TextBox>
</div>
<div style="width:140px;border:solid;background-color:aquamarine;float:left">
Holiday description
<asp:TextBox ID="TextBox2" runat="server" BackColor="Transparent"></asp:TextBox>
</div>
<div style="clear:both"></div>"
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server">FirstName</th>
<th runat="server">LastName</th>
<th runat="server">City</th>
<th runat="server">Active</th>
So, we see this:

If I run the above, we get this:

so you can layout the heading part with ANY kind of markup you want.
but then below is the table layout for the repeating rows.
so you can layout quite much any HTML markup for the repeating rows (easy), and then layout the heading part (hard), but at least using a listview allows this. So, listview has much more configuration and layout abilities then does gridiew.
For a simple grid of data? Gridview is great.
For more complex, but more work? then use listview.