I need to add a secondary (header) row to my ASP.NET GridView (which is already customized so I can access any part of the event lifecycle). 

It's additional data that I want aligned with some of the columns. 

It should look like this

```

Period    |  May  |  June | July | Aug      -- Header
Basevalue | 3000  | 1500  | 1200 | 4000     -- EXTERNAL DATA
---------------------------------------
Item 1    |  100  |  200  |  300 |  400    
Item 2    |  100  |  200  |  300 |  400      

```

I managed to add a row with below code, but I am unable to create any kind of custom event where I could gain access and write my custom data into that cell. I tried the following, but during any event I could find (like OnRowCreated or PrepareControlHierarchy), it's either too late (after databinding) or the inner table is not initalized.

```
int rowIndex = 0;

GridViewRow secondHeaderRow = new GridViewRow(rowIndex, -1, DataControlRowType.Header, DataControlRowState.Normal);
secondHeaderRow.TableSection = TableRowSection.TableHeader;

foreach (DataControlField col in this.Columns)
            {
                TableHeaderCell cell = new TableHeaderCell();
                cell.DataBinding += new EventHandler(OnHeaderCellDatabinding);
                secondHeaderRow.Cells.Add(cell);
            }

 InnerTable.Rows.AddAt(rowIndex, secondHeaderRow);

```

How can I hook up to the GridView lifecycle to write in the header row?