Jag brukar själv använda mig utav en DataGrid och sen lägga till olika columner beroende på vilken data jag har fått ut.
DataGrid dg = new DataGrid();
string bla;
if(bla == "blabla"){
hlc = new HyperLinkColumn();
hlc.DataTextField = "kolumn1";
hlc.DataNavigateUrlField = "kolumn2";
hlc.HeaderText = "Min kolumn:";
dg.Columns.Add(hlc);
} else {
BoundColumn bc = new BoundColumn();
bc.DataField = "kolumn1";
bc.HeaderText = "Min kolumn:";
dg.Columns.Add(bc);
}