Io non userei nè l'uno nè l'altro ma farei una table a mano. Però, tempo fa, in questo forum ho visto questo esempio che ti ripropongo. L'esempio crea una riga di intestazione unendo due colonne.
codice:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
ModuloWeb.DataBind(this.GridView1, MioModulo.StringaConnessioneTest, "SELECT * FROM REGIONI ORDER BY NOME_REGIONE", new string[] { "codice_istat_regione" });
}
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
//reindirizzo il metodo render predefinito al metodo personalizzato
if (e.Row.RowType == DataControlRowType.Header)
e.Row.SetRenderMethodDelegate(CreaIntestazione);
}
private void CreaIntestazione(HtmlTextWriter writer, Control ctl)
{
//non c'è bisogno di <tr> perchè il writer lo mette in automatico
writer.Write("<td colspan=\"2\" align=\"center\" style=\"color:darkblue;background-color:#99ccff\" >CAMPI</td>");
writer.Write("</tr>");
this.GridView1.HeaderStyle.AddAttributesToRender(writer);
//ricostruisco la testata originale generata da gridwiew
writer.RenderBeginTag("tr");
int ind = 0;
while (ind <= ctl.Controls.Count - 1)
{
ctl.Controls[ind++].RenderControl(writer);
}
//non c'è bisogno della chiusura </tr> perchè il writer lo mette in automatico
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
<link href="../../../../stili/Styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" EnableViewState="false" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowCreated="GridView1_RowCreated">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
</form>
</body>
</html>