[C#] gerer une liste à partir d'un fichier xml

[Résolu]
Signaler
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
bonjour,
dans une de mes appliquations j'aimerais gerer une "liste verte" comme sur cette exemple : http://img97.imageshack.us/img97/5669/image19aw.jpg

j'aimerais savoir quelle type de liste implanter pour que je puisse afficher des informations dedans à partir d'un fichier xml et que je puisse les selectionner pour les suprimer. Dois je mettre un datagrid ??
Qu'est ce qu'un datagrid ?

merci

12 réponses

Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
Other solution => utilisation de la classe XML + listeView tu est plus libres :)

using System.Xml

XmlTextReader xmlr = new XmlTextReader("monFichier.Xml");

'on parcour le fichier xml

while(xmlr.Read){
if (xmlr.NodeType = XmlNodeType.Element){
if(xmlr.Name = "contact"){
maListView.item.add(xmlr.ReadElementString);
}
}
}







xmlr.Close()
'on referme le fichier xml
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
euh il faut que tu ailles dans les propriétés de ta listesView et que tu changes cette options qui est par défaut à large icones.

Ensuite tu reprends le code du haut (corrigé ) et avant de passer dans ta boucle while tu met

maLstView.Clear(); //le fait de clear permet de réinitialisé la liste a chaque fois (utils si tu fait une fonction d'affichage pour pas rajouter à la suite de a listeView

maLstView.Columns.Add("Contact",100,HorizontalAlignment.Left);


/*si tu veux ajouter une colonne dans ta liste view (si par exemple dans ton fichier xml tu a l'age de tes contacts et que tu veux l'ajouter à la liste view).

maLstView.Columns.Add("Age",20,HorizontalAlignment.Left);

Ensuite ta boucle reste inchangée (sauf donc si tu veux afficher l'age en plus ...) il faut dans ce cas que tu parcours par la meme méthode ton fichier xml et pour afficher dans la listeView en mode detaille l'age :
listView1.Items[indiceDeLaLstView].SubItems.Add("monItem"); */


Voila

Bon dev et bonne journée
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
j'ai trouvé comment faire il ne me reste plus qu'a savoir comment suprimer une seul ligne dans un fichier xml
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
le datagrid est un control tres pratique qui te permet d'afficher des données
ce que tu peux faire si ton fichier xml est bien formater

imports system.data;

DataSet monDs = new DataSet();

monDs.readXml("monFichier.xml");

monDataGrid.datasource = monDs;

et voila :)
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Donc un datagrid conviendrait ??
Il n'existe pas de tuto pour bien formater un fichier xml ?

merci
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
j'ai testé le couple datagrid + xml sa marche bien
mais j'aimerais simplement avoir une liste toute simple contenant les adresses stocké dans mon fichier xml et non pas un truc aussi compliqué : http://img99.imageshack.us/img99/5338/image10dv.jpg

voici mon fichier xml :


<?xml version="1.0" standalone="yes" ?>


<NewDataSet>



<contact>thomas@
</contact>


</NewDataSet>
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
merci pour le code je l'ai corrigé et il marche bien il y a juste un petit truc : les donnees du fichier xml ne prenne pas toute la longueur de la listeview et il y a 2 adresse par ligne
comment faire pour qu'il y'en ai qu'une
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Sa marche super !!!!
merci
Bonne journée
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
une autre question comment je pourais faire pour que quand on clic sur le bouton suprimer sa suprime la ligne dans le fichier xml ?
comment lié les elements affichés dans la liste et le bouton ?
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
pour pouvoir supprimer dans un fichier xml je ne connais qu'une méthode, regénérer et réécrire le fichier xml.

2 solutions :

La premiere ("la plus chiante a mon gout") :

//tu supprimes et creer un fichier xml grace a la Class File puis

XmlDocument docXml
= New XmlDocument();


//tu load ton fichier xml (qui est vierge)

docXml.Load(Application.StartupPath & "\touteLesSources.xml");



' Créer un nouveau noeud

contact = docXml.CreateElement("CONTACTS");



' Créer un nouvel element contact


element = docXml.CreateElement("contact");


element.InnerText ="nom du contact";



' tu ratache l'element au noed pere


contact.AppendChild(element)


docXml.DocumentElement.AppendChild(contact)



'sauvegarde


docXml.Save("monFichierXml");

2 eme solution (je prefere) : Utilisation du dataSet

pour cela je t'invite à consulter l'une de mes sources qui utilise justement les dataSet et les fichiers Xml sachant que toute la partie xml est gerée automatiquement

http://www.csharpfr.com/codes/BRIKABRAK-LA-BOITE-A-OUTILS-POUR-LE-DEVELOPPEUR-D-APPLICATION/35875.aspx
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
mais comment lier les elements de la liste generé par le fichier xml avec le bouton suprimer ? pour que quand je selectionne une ligne et que j'appuie sur le bouton suprimer sa suprime cette liste.

Si vous avez besoin d'explications suplémentaires demandé moi
merci
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
je pensais creer une fonction qui serait appellé lorsque l'on clique sur une ligne qui creerais un bouton
avez vous de idees ?

merci