none
Comment enregistrer le contenu d'un DataGridView dans un fichier XML RRS feed

  • Question

  • Bonjour! Après plusieurs recherche sur internet en est rien trouver  , je voulais savoir comment fait-on pour enregistrer le contenu d'un DataGridView sous le format XML et de l'ouvrir par la suite et ainsi effectuer des modification et mise à jour. Merci d'avance.
    dimanche 6 juillet 2008 17:27

Réponses

  • Bon vite fait sur le gaz mais ça doit correspondre à ce que tu veux.

     

    J'ai mis le projet complet dans un zip ici:

    http://garadel.dnsalias.net/myspace/tutoriaux/

     

    et sinon voici comment le construire:

     

    Créer un projet avec une gridview et 2 boutons puis utiliser le code suivant pour le load du form:

    Code Snippet

                _carnet = new DataSet();

                DataTable monCarnet = new DataTable("Carnet");

                DataColumn nom = new DataColumn("Nom", System.Type.GetType("System.String"));

                DataColumn prenom = new DataColumn("Prenom", System.Type.GetType("System.String"));

                DataColumn adresse = new DataColumn("Adresse", System.Type.GetType("System.String"));

                monCarnet.Columns.Add(nom);

                monCarnet.Columns.Add(prenom);

                monCarnet.Columns.Add(adresse);

                _carnet.Tables.Add(monCarnet);

     

                dataGridView1.DataSource = _carnet;

                dataGridView1.DataMember = "Carnet";

     

    le code suivant pour le bouton de sauvegarde

    Code Snippet

                _carnet.WriteXml(@"c:\carnet.xml");

     

     

    le code suivant pour le chargement:

    Code Snippet

                 _carnet.ReadXml(@"c:\carnet.xml");

     

     

    et ne pas oublier de mettre une déclaration pour le dataset:

    Code Snippet

            private DataSet _carnet;

     

     

     

     

    Bon code

     

     

    mercredi 9 juillet 2008 13:41

Toutes les réponses

  • Bonjour,

     

    Normal que tu n'ais rien trouvé car le DataGridView n'est qu'un composant d'affichage. C'est à la datasource qu'il faut s'intéresser.

    Il faut extraire le dataset (où la datatable) de datasource puis utiliser les méthodes writeXml (puis readXml).

     

    A noter: dans le cas du datatable il faut aussi penser à utiliser les méthode WriteXmlSchema (ReadXmlSchema) sinon tu perds la structure des données et tu ne peux pas les recharger (par code simple en tout cas).

    Je pense que ce n'est pas nécessaire si tu utilises une datatable typée.

     

    N'hésite pas si c'est pas très clair (j'ai pas encore eut mon premier café ).

     

    lundi 7 juillet 2008 06:57
  • Oui je le sais! Voila ce que j'ai mis. Mais j'ai pas beaucoup de repère sur ce composant et sur sa fonctionnalité.

    Code Snippet

    DataSet ds = new DataSet();

    ds.WriteXml(@"Data\test.xml");

    DataGridView1.DataSource = ds;


    Bon je sais que ça ne fonctionne pas, mais j'ai aucune connaissance sur le langage xml.
    mardi 8 juillet 2008 15:11
  • tout d'abord, je crois que tu devrais inscrire le chemin du fichier en entier, pour être sûr que cela fonctionne.
    mardi 8 juillet 2008 18:36
    Modérateur
  • Salut Biche! Ceci n'est pas le problème, car le fichier est enregistrer mais pas le contenu de la DataGridView
    mercredi 9 juillet 2008 07:58
  • Ton fichier est entièrement vide? Es-ce que ton DataSet contient des données?
    mercredi 9 juillet 2008 11:52
    Modérateur
  • Je crois que je vois le problème (mais pas sur car l'extrait de code est un peu petit )

     

    DataSet ds = new DataSet();

    // La le dataset est crée mais vide

    ds.WriteXml(@"Data\test.xml");

    //tu sauvegardes donc un dataset vide

    DataGridView1.DataSource = ds;

    //tu affectes le dataset à la gridview

     

    Tout dépend donc à quel moment tu remplis ta gridview. Je vais supposer que tu le fait manuellement après avoir écrit le code que tu nous as donné.

    Pour ma part je rajouterai donc un bouton (pour déclencher la sauvegarde une fois la gridview remplie) dans lequel je mettrai:

     

    Code Snippet

    DataSet ds = (DataSet )DataGridView1.DataSource;

    ds.WriteXml(@"Data\test.xml");

     

    Et ça devrait fonctionner.

     

    Si tu as un soucis je te ferai un exemple complet car j'utilise ça tout le temps (notamment dans mon assistant pour donjons et dragons 4) et ça marche nickel.

    mercredi 9 juillet 2008 11:55
  •  Biche A écrit:

    Ton fichier est entièrement vide? Es-ce que ton DataSet contient des données?



    Non il y a juste ceci:

    Code Snippet

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


    mercredi 9 juillet 2008 12:20
  • Salut Radric! Mon but c'est de faire une application de donnée permettant de sauvegarder le tout à partir du composant DataGridView. Au premier lancement de l'application la grille est vide sauf pour le conteneur du tableaux.(contect, numéro, etc...)  Donc c'est à l'utilisateur de lui rajouter des valeurs et a les sauvegarder. Donc voila un peu le but général. Mais ce ne sont que des projets test pour le moment. Si tu as un code plus long je suis preneur. Car moi je cherche toujours faire simple court et efficace. Mais ça ne marche pas toujours. Et sinon tu travaille dans les jeux-vidéos? (réf. Donjons et dragons 4)
    mercredi 9 juillet 2008 12:40
  • Ok je vais essayer de te faire un petit exemple. Je posterai là quand c'est fini.

     

    Travailler dans les jeux vidéo non ! Si c'était pas un monde si difficile à vivre (d'après les échos), je m'y plairai surement.

    Non donjon c'est un projet perso car étant MJ j'ai été tès déçu par ce que WoTC propose pour la nouvelle version (ce qu'ils appellent insiders). Comme nous jouons une fois par semaine en VoIP (mes joueurs sont un peu partout en France) je développe un outil annexe pour assister le jeu. C'est aussi un bon bac à sable pour tester XAML, WCF, .... (Un pote aimerai bien que l'expérience que nous en retirerons nous permette de développer un jeu de stratégie tactique à la final fantasy, lui voulant faire du dev sur mono mais ce n'est qu'une idée pour l'instant).

     

     

    mercredi 9 juillet 2008 13:16
  • Bon vite fait sur le gaz mais ça doit correspondre à ce que tu veux.

     

    J'ai mis le projet complet dans un zip ici:

    http://garadel.dnsalias.net/myspace/tutoriaux/

     

    et sinon voici comment le construire:

     

    Créer un projet avec une gridview et 2 boutons puis utiliser le code suivant pour le load du form:

    Code Snippet

                _carnet = new DataSet();

                DataTable monCarnet = new DataTable("Carnet");

                DataColumn nom = new DataColumn("Nom", System.Type.GetType("System.String"));

                DataColumn prenom = new DataColumn("Prenom", System.Type.GetType("System.String"));

                DataColumn adresse = new DataColumn("Adresse", System.Type.GetType("System.String"));

                monCarnet.Columns.Add(nom);

                monCarnet.Columns.Add(prenom);

                monCarnet.Columns.Add(adresse);

                _carnet.Tables.Add(monCarnet);

     

                dataGridView1.DataSource = _carnet;

                dataGridView1.DataMember = "Carnet";

     

    le code suivant pour le bouton de sauvegarde

    Code Snippet

                _carnet.WriteXml(@"c:\carnet.xml");

     

     

    le code suivant pour le chargement:

    Code Snippet

                 _carnet.ReadXml(@"c:\carnet.xml");

     

     

    et ne pas oublier de mettre une déclaration pour le dataset:

    Code Snippet

            private DataSet _carnet;

     

     

     

     

    Bon code

     

     

    mercredi 9 juillet 2008 13:41
  • Eh ben! Je ne pense pas un instant que j'aurais fait ça! Merci Radric. Maintenant je dois me débrouiller pour faire le chargement à partir de la première fenêtre et de transférer les données sur la deuxième fenêtre (contient le DataGridView). Sinon la sauvegarde fonctionne et je vois un peu mieux comment fonctionne le langage XML. Et est-ce que beaucoup de personne s'en sert pour des sauvegarde (Pas toujours de donnée à partir d'un tableaux ).

    Sinon jamais votre idée de créer ce jeu venais à bout, j'espère y jouer . Certes c'est très difficile côté entreprises, car ils ont des délai à respecter et à soigner la qualité (surtout rester au top du top). Bonne chance quand même.

    Par contre une fois que mon application fonctionnera correctement, je passerai au cryptage et décryptage des fichiers que je maitrise un peu. Voily voilu.

    mercredi 9 juillet 2008 16:11
  • Je sais que le sujet date un peu (voir pas mal) mais je tient a vous remerciez car celui-ci m'as était d'une grande aide pour mon stage. En effet je devait créer une appli c# /winform pour recenser des personnes dans un tableau. Cela ma permis enfin de résoudre mon problème de sauvegarde /load.
    lundi 18 mai 2015 08:19