Problema Xmldatasource con Gridview

venerdì 05 ottobre 2007 - 08.01

Lechter Profilo | Newbie

salve a tutti,
è la prima volta che scrivo nel vostro forum

sto cercando di creare una pagina aspx nella quale visualizzare i dati di due tabelle create mediante foglio XML con relativo XSD.
il problema è che, seguendo molti esempi trovati per la rete, non riesco a far funzionare il tutto.

Ho inserito nella mia pagina, in modalità progettazione, una gridview, dandole come sorgente XMl il file XMLmodifica.Xml

ma la gridview mi visualizza solo i primi tre campi della prima tabella (la tabella studenti) e non la tabella Voti!

sapreste aiutarmi?

ecco il codice XML

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Questo è invece il codice XSD

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ed ecco, per ultimo, il codice della pagina Aspx

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Da tenere presente che anche aggiungendo manualmente le colonne alla pagina aspx e non tramite il controllo gridview in progettazione, non mi trova le colonne della tabella Voti.

Grazie..spero mi possiate aiutare!

Stefano


---dai che è ore ke aspetto! x favore! aiuto!

freeteo Profilo | Guru

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
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5