IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Charger du XML dans un dataset et l'afficher dans un datagridview


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut Charger du XML dans un dataset et l'afficher dans un datagridview
    Bonsoir,

    Décidemment XML et moi ça fait deux

    J'ai un petit soucis lorsque je charge un fichier xml de la manière suivante dans un datagridview:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void LoadAllToDos()
            {
                MessageBox.Show("ouai");
                XmlDataDocument xmldata = new XmlDataDocument();
                MessageBox.Show("ok");
                xmldata.DataSet.ReadXmlSchema(@"./../../Data/" + Program.__ToDosXSDFile);
                MessageBox.Show("cool!!");
                xmldata.DataSet.ReadXml(@"./../../Data/" + Program.__ToDosXMLFile, XmlReadMode.ReadSchema);
                MessageBox.Show("1");
                dgvAllToDos.DataSource = xmldata.DataSet;
                MessageBox.Show("2");
                dgvAllToDos.DataMember = "item";
                MessageBox.Show("3");
            }

    Les messagesbox sont la pour débuger, et en gros il va jusqu'à "cool!!" puis il bloque lors de ReadXml et m'affiche l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The string 01.11.2010 is not a valid AllXsd value
    Voici mon fichier XML:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="utf-8"?>
    <todo>
      <item id="0" project="Pif" area="AM" initiatedDate="31.10.2010" dueDate="01.11.2010">dasdasdas</item>
    </todo>

    Et le fichier XSD:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="todo">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="item">
              <xs:complexType>
                <xs:attribute name="id" type="xs:int" use="optional" />
                <xs:attribute name="project" type="xs:string" use="optional" />
                <xs:attribute name="area" type="xs:string" use="optional" />
                <xs:attribute name="initiatedDate" type="xs:dateTime" use="optional" />
                <xs:attribute name="dueDate" type="xs:dateTime" use="optional" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    Les données sont inséré de la manière suivante:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     public static void AddToDoItem(string XMLDataFile, string text, ComboBox project, ComboBox area, DateTime initiatedDate, DateTime dueDate)
            {
                XDocument xmlFile = XDocument.Load(@"./../../Data/" + XMLDataFile);
     
                XElement item = new XElement("item",
                    new XAttribute(Program.toDosFields[0].ToString(), GetXMLLastID(xmlFile) + 1),
                    new XAttribute(Program.toDosFields[1].ToString(), project.SelectedValue),
                    new XAttribute(Program.toDosFields[2].ToString(), area.SelectedValue),
                    new XAttribute(Program.toDosFields[3].ToString(), initiatedDate.ToShortDateString()),
                    new XAttribute(Program.toDosFields[4].ToString(), dueDate.ToShortDateString())
                    );
     
                item.SetValue(text);
                xmlFile.Root.Add(item);
                xmlFile.Save(@"./../../Data/" + XMLDataFile);
            }

    Ou est mon erreur pour qu'il me sorte le message d'erreur que j'ai? A mon avis ça doit être un problème de format de date mais je n'en suis pas sûr...

    Merci bien,

    L.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    C'est en effet une erreur de format de date. Il faut suivre le format ISO 8601 et utiliser DateTime.ToString("s") pour SortableDateTimePattern et le tour est joué

    [EDIT]
    Ce n'est pas tout à fait résolu... en fait il m'affiche bien les valeurs id, project, area etc, mais pas le texte (la veleur donc) qui est entre mon <item> LeText </item>.

    Est-ce qu'il y a un moyen de lui dire de tout afficher, c-a-d les attributs ainsi que la valeur?

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Je suis toujours bloqué avec mon problème, si quelqu'un à la solution n'hésitez pas car je galère là :s

    Par contre, autre problème toujours lié au XML, c'est que j'aimerais bien caché la colonne ID par exemple, du coup j'ai fais le code suivant:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    xmldata.DataSet.Tables[0].Columns["id"].ColumnMapping = MappingType.Hidden;

    Mais j'obtiens une erreur qui me dit que je ne peux pas modifier un dataset lorsqu'il a été associé avec un document XML. Pas trop compris là car je veux juste caché une colonne...

    Merci bien pour votre aide

    L.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Leelith Voir le message
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    xmldata.DataSet.Tables[0].Columns["id"].ColumnMapping = MappingType.Hidden;
    .
    Normal que tu ait cette erreur vu que tu agis directement sur le dataset. Regarde du côté de ton DataGridView si tu ne peux pas cacher la colonne. ça devrait être possible.

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Mhh ok je vais regardé du côté du datagridview.

    Si tu as une solution par contre pour mon autre problème je prend également volontier ^^

  6. #6
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    J'ai contourné le problème en faisant un parcourt de mes nodes et en les insérants dans un dataset

    Du coup plus de problème pour afficher la valeur et tout

    L.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2009, 23h15
  2. Réponses: 0
    Dernier message: 12/12/2008, 12h33
  3. Réponses: 2
    Dernier message: 30/10/2008, 18h37
  4. Dessiner dans un Jpanel et l'afficher dans un JFrame
    Par Sourrisseau dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 26/02/2007, 22h41
  5. Réponses: 6
    Dernier message: 01/02/2007, 05h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo