Hallo,
eigentlich hast Du die Lösung ja schon selbst gepostet:
Du kannst die GridViews ganz normal mit new erzeugen, danach musst Du sie nur noch in die Controls-Collection Deiner Page (oder irgendeines anderen Controls innerhalb der Page) stecken. Page_Load ist die richtige Stelle.
Hier mal ein Beispiel:
void Page_Load(object sender, EventArgs e)
{
GridView gv;
foreach(/*hier die Collection durchlaufen*/)
{
gv = new GridView();
gv.DataSource = dataSource; // wobei hier "dataSource" das Ergebnis Deiner Abfrage ist
Controls.Add(gv);
}
DataBind();
}