Hey I had the same issue struggled for two days , finally got it working .
page_Init we need to rebind the templete controls....
GridView.Columns.Clear();
for (int colcount = 0; colcount < dtPatterns.Columns.Count; colcount++)
{
TemplateField ItemTmpField = new TemplateField();
ItemTmpField.HeaderTemplate =
new DynamicallyTemplatedGridViewHandler(ListItemType.Header,
dt.Columns[colcount].ColumnName,
dt.Columns[colcount].DataType.Name, iseditMode);
ItemTmpField.ItemTemplate =
new DynamicallyTemplatedGridViewHandler(ListItemType.Item,
dt.Columns[colcount].ColumnName,
dt.Columns[colcount].DataType.Name, iseditMode);
ItemTmpField.EditItemTemplate =
new DynamicallyTemplatedGridViewHandler(ListItemType.EditItem,
dt.Columns[colcount].ColumnName,
dt.Columns[colcount].DataType.Name, iseditMode);
ItemTmpField.HeaderStyle.Width = Unit.Percentage(90 / dtPatterns.Columns.Count);
ItemTmpField.HeaderStyle.Font.Bold = true;
PatternGridView.Columns.Add(ItemTmpField);
}
PatternGridView.DataSource = dt;
PatternGridView.DataBind();