Popolare listview con file.xml

giovedì 02 settembre 2010 - 22.09
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  Access (.mdb)  |  Office 2003  |  Crystal Reports 2008

Mau67 Profilo | Expert

Ciao al forum, è la prima volta che mi capita, qualcuno sa dirmi coe si popola un listview con i dati presenti dentro un file.xml ?

Grazie
Mau67

alx_81 Profilo | Guru

>Ciao al forum, è la prima volta che mi capita,
ciao

>qualcuno sa dirmi coe si popola un listview con i dati presenti dentro un file.xml?
ci sono vari metodi.. Quello che preferisco è utilizzare un XmlReader per scorrerlo e parsarlo all'interno di miei oggetti.
In questo modo popolo delle collezioni (o dei datatable se ti è più comodo) che poi passo alla proprietà datasource del listview.
Hai dimestichezza con il namespace System.Xml?

Qui qualche link utile:

System.Xml Namespace
http://msdn.microsoft.com/en-us/library/system.xml(VS.71).aspx

XmlReader class
http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx

Reading xml with XmlReader
http://msdn.microsoft.com/en-us/library/9d83k261.aspx
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mau67 Profilo | Expert

No non ho dimistichezza, è la prima volta che mi imbatto in questo,
non potresti farmi un esempio di stringa da scrivere nel form_load per popolare la listview all'apertura del form in linguaggio VB?

grazie
Mau67

alx_81 Profilo | Guru

>No non ho dimistichezza, è la prima volta che mi imbatto in questo,
>non potresti farmi un esempio di stringa da scrivere nel form_load
>per popolare la listview all'apertura del form in linguaggio VB?
purtroppo non posso fartelo in VB, ma si capisce cmq in c# . Se ti basta ti faccio un esempio appena riesco..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mau67 Profilo | Expert

ok ti ringrazio aspetto il codice grazie

Ciao
Mau67

alx_81 Profilo | Guru

>ok ti ringrazio aspetto il codice grazie
Eccoci, dunque, partiamo passo passo:

1) creazione di un xml di esempio:

<?xml version="1.0"?> <clienti> <cliente id="1" nome="Alessandro" /> <cliente id="2" nome="Paolo" /> <cliente id="3" nome="Andrea" /> <cliente id="4" nome="Moreno" /> <cliente id="5" nome="Giovanni" /> <cliente id="6" nome="Vincenzo" /> <cliente id="7" nome="Michael" /> </clienti>

2) creazione della classe che conterrà le informazioni del nodo letto dal file xml:

/// <summary> /// Questa classe conterrà il nodo corrente /// </summary> public class Cliente { public int id { get; set; } public string nome { get; set; } }

3) metodo che gestisce il parsing del file xml per metterlo in una collezione (tornata dal metodo stesso):

private List<Cliente> LeggiDaXml(string percorso) { // creo la lista vuota di clienti List<Cliente> clienti = new List<Cliente>(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(percorso); // mi posiziono sulla lista dei clienti sul file xml XmlNode xPrimoNodo = xmlDocument.SelectSingleNode("clienti"); //ricavo la lista dei nodi figli XmlNodeList xListaClienti = xPrimoNodo.SelectNodes("cliente"); if (xListaClienti != null) { // scorro la lista dei nodi figli "cliente" foreach (XmlNode xCliente in xListaClienti) { // popolo il cliente Cliente cliente = new Cliente(); cliente.id = Convert.ToInt32(xCliente.Attributes["id"].Value); cliente.nome = xCliente.Attributes["nome"].Value; // aggiungo il cliente alla lista clienti.Add(cliente); } } return clienti; }

4) Binding con il tuo list view (ipoteticamente chiamato LV1) nella page load:

protected void Page_Load(object sender, EventArgs e) { LV1.DataSource = this.LeggiDaXml(@"C:\Clienti.xml"); LV1.DataBind(); }

N.B. Ricordati di aggiungere il namespace System.Xml in alto (Imports).
Facci sapere
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mau67 Profilo | Expert

Scusa la domanda ma io ho già un file xml che risiede nella directory dell'applicazione, come mi collego a quello? il file si chiama Utenti.xml

Mi dice che DataSource non è un membro dell'applicazione

Grazie
Mau67

alx_81 Profilo | Guru

>Scusa la domanda ma io ho già un file xml che risiede nella directory
>dell'applicazione, come mi collego a quello? il file si chiama
>Utenti.xml
ovviamente il mio è un esempio.. tu dovrai adattarlo al tuo file
dovrai creare la classe a mano per il tuo nodo utente e rifare il mapping. Questo è solo un esempio.

>Mi dice che DataSource non è un membro dell'applicazione
Il list view, dovrebbe avere una proprietà DataSource, altrimenti non potrei passare la lista come sorgente.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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-2014
Running on Windows Server 2008 R2 Enterprise, SQL Server 2008 & ASP.NET 3.5