ciao,
la datagridview non ha un comportamento "gerarchico" completamente automatico, devi fartelo tu.
Io lavorerei con un XML in questo modo:
<?xml version="1.0" encoding="utf-8" ?>
<studenti>
<studente id="1" nome="matteo">
<voto materia="italiano" valore="4" />
<voto materia="matematica" valore="3" />
<voto materia="diritto" valore="2" />
</studente>
<studente id="2" nome="marco">
<voto materia="italiano" valore="7" />
<voto materia="matematica" valore="8" />
<voto materia="diritto" valore="9" />
</studente>
</studenti>
e poi userei XPath nel bindare gli oggetti dentro a qualche lista, con un codice tipo:
<asp:GridView ID="Repeater1" runat="server"
DataSourceID="XmlDataSource1" AutoGenerateColumns="false" >
<Columns>
<asp:BoundField DataField="nome" />
<asp:BoundField DataField="id" />
<asp:TemplateField>
<ItemTemplate>
<asp:Repeater ID="rptVoti" runat="server"
DataSource='<%# XPathSelect("voto") %>' >
<ItemTemplate>
<%# XPath("@materia") + "=" + XPath("@valore")%>
<br/>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Dove "XPathSelect("voto")" vado a fare la query con XPath sull'insieme di oggetti "voto" che ho nella sorgente dati per quella riga (questa gerarchia è data appunto dall'XML).
A questo punto il repeater interno ha una sorgente dati che è l'insieme dei voti dello studente, e quindi per ognuno visualizzo l'attributo che mi interessa, sempre usando XPath ( <%# XPath("@materia") ... )...
Mi sono trovato bene con questa strategia perche' non mi serve fare nessun codice lato server.
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo