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

ASP.NET Discussion :

Gridview et XML


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut Gridview et XML
    Bonjour,

    Avant toute chose je voudrais que suis débutante en asp.net, xml et c#.

    Je voudrais pouvoir faire l'ajout, la modificication, supp... des données d'un fichier XML à partir d'un gridview.
    J'ai ce code qui fonctionne très bien pour un fichier du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml ...?>
    <donnees>
    <item>
    <title> </title>
    <link> </link>
    <description> </description>
    </item>
    </donnees>

    Voici le code:

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    public partial class Default : System.Web.UI.Page
    {
     
    internal int selectIndex
    {
    get
    {
    if (this.Session["Page_selectIndex"] == null)
    return -1;
    return Int32.Parse(this.Session["Page_selectIndex"].ToString());
    }
    set
    {
    this.Session["Page_selectIndex"] = value;
    }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    loadXmlData();
    }
    }
     
     
    private void loadXmlData()
    {
    DataSet myDs = new DataSet();
    myDs.ReadXml(Server.MapPath("fichier.xml"));
     
    if (myDs.Tables.Count >0)
    {
    this.GridView1.DataSource = myDs;
    this.GridView1.DataBind();
    }
    }
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
    selectIndex = this.GridView1.SelectedIndex;
    FindXmlData(selectIndex);
    }
     
    private void FindXmlData(int selectedIndex)
    {
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath("fichier.xml"));
    XmlNodeList xmlnodelist = xmldoc.DocumentElement.ChildNodes;
    XmlNode xmlnode = xmlnodelist.Item(selectedIndex);
     
    this.TextBox1.Text = xmlnode["title"].InnerText;
    this.TextBox2.Text = xmlnode["link"].InnerText;
    this.TextBox3.Text = xmlnode["description"].InnerText;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath("fichier.xml"));
     
    XmlElement newelement = xmldoc.CreateElement("item");
    XmlElement xmltitle = xmldoc.CreateElement("title");
    XmlElement xmllink = xmldoc.CreateElement("link");
    XmlElement xmldescription = xmldoc.CreateElement("description");
     
    xmltitle.InnerText = this.TextBox1.Text.Trim();
    xmllink.InnerText = this.TextBox2.Text.Trim();
    xmldescription.InnerText = this.TextBox3.Text.Trim();
     
    newelement.AppendChild(xmltitle);
    newelement.AppendChild(xmllink);
    newelement.AppendChild(xmldescription);
     
    xmldoc.DocumentElement.AppendChild(newelement);
     
    xmldoc.Save(Server.MapPath("fichier.xml"));
     
    loadXmlData();
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
    if (selectIndex == -1)
    {
    this.RegisterClientScriptBlock("alertmessage", "<script>alert('please select one modify data item.')</script>");
    }
    else
    {
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath("fichier.xml"));
    XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(selectIndex);
     
    xmlnode["title"].InnerText = this.TextBox1.Text.Trim();
    xmlnode["link"].InnerText = this.TextBox2.Text.Trim();
    xmlnode["description"].InnerText = this.TextBox3.Text.Trim();
     
    xmldoc.Save(Server.MapPath("fichier.xml"));
     
    loadXmlData();
    }
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(Server.MapPath("fichier.xml"));
    XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(selectIndex);
    xmlnode.ParentNode.RemoveChild(xmlnode);
    xmldoc.Save(Server.MapPath("fichier.xml"));
     
    loadXmlData();
    this.TextBox1.Text = "";
    this.TextBox2.Text = "";
    this.TextBox3.Text = "";
    }
    J'ai essayé avec ce type de fichier, ça ne fctionne pas du tout.
    Comment faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml ...?>
    <rss version="2.0">
    <channel>
    <title> </title>
    <link> </link>
    <description> </description>
    <item>
    <title> </title>
    <link> </link>
    <description> </description>
    </item>
    </channel>
    </rss>

    J'ai essayé de bien me positionner au niveau des noeuds mais à chq fois j'ai un message d'erreur avec :
    this.GridView1.DataBind();

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est quoi le msg d'erreur

    Pense à utilise la balise CODE la prochaine fois =>

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    Message d'erreur:
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Web.HttpException: Impossible de trouver un champ ou une propriété 'nom' dans la source de données sélectionnée.


    Erreur source:
    this.GridView1.DataBind();


    ça fctionne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <rss>
      <channel>
         <item>
            ....
         <i/tem>
      </channel>
    </rss>
     mais des que je mets
     
    <rss version="2.0">..... </rss>
    ça ne fctionne pas.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ton erreur mentionne un champ "nom", il sort d'où?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    oups désolé au fait à la place de nom c'est title
    Et aussi pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <rss>
      <channel>
            <title> W3shools </title>
            <link>  .....        </link>
            <desc ...                  >
          <item>
              <title>.. </title>
            <link>  .....        </link>
            <desc ...                  >
      </item>
    </channel>
    </rss>
       ça affiche que  la premiere partie qui n est pas compris entre la balise item.

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Fais voir comment le code de ton GridView.
    Tu dois binder une colonne sur le champ 'title' qui n'existe pas dans le DataSet

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2011, 08h57
  2. Remplissage D'un Gridview par un fichier XML
    Par derfez dans le forum C#
    Réponses: 2
    Dernier message: 28/06/2010, 13h18
  3. GridView & XML-XPATH
    Par Mictou dans le forum ASP.NET
    Réponses: 0
    Dernier message: 27/01/2010, 19h56
  4. export gridview vers xml
    Par tortuegenie dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/07/2009, 23h34
  5. Réponses: 3
    Dernier message: 05/11/2008, 10h24

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