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

  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

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    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
     
     
    <body>
      <form id="form1" runat="server">
    <div>
        &nbsp;</div>
    <fieldset style="height: 519px">
    <legend>Liens RSS</legend>
    title:&nbsp;
    <asp:TextBox ID="TextBox1" runat="server" Width="231px"></asp:TextBox><br />
    Link: &nbsp; &nbsp;&nbsp;
    <asp:TextBox ID="TextBox2" runat="server" Width="231px"></asp:TextBox><br />
    Delete:<asp:TextBox ID="TextBox3" runat="server" Width="231px"></asp:TextBox>
        &nbsp; &nbsp;<br />
        &nbsp;
        <br />
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Ajout" />
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Modification" />
    <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Supprimer" />
    <br />
        &nbsp;<br />
        &nbsp;
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width="389px" AutoGenerateColumns="False" Height="165px">
    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <Columns>
    <asp:CommandField EditText="Modify" ShowSelectButton="True" />
    <asp:BoundField DataField="title" HeaderText="title" />
    <asp:BoundField DataField="link" HeaderText="Link" />
    <asp:BoundField DataField="description" HeaderText="Description" />
    </Columns>
    <RowStyle BackColor="#E3EAEB" />
    <EditRowStyle BackColor="#7C6F57" />
    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <AlternatingRowStyle BackColor="White" />
    </asp:GridView>
    </fieldset>
    </form>
    </body>

  8. #8
    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
    Ta DataSource ne doit pas avoir de propriété Title.

    Un test simple pour voir est de virer tes BoundColumn et de passer ton GridView en AutoGenerateColumn = True

  9. #9
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    quand je fais cela je n'obtient rien.
    On m'a aussi dit que ce n'était pas possible de 'bind' un griedview à un fichier RSS. Parceque le format d'un fichier RSS et différent du format définit dans le System.Data
    T'en penses quoi?

  10. #10
    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
    aucune idée, j'ai tjs bindé mes GridView à des objets liés à des DB

  11. #11
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    Bon je vais laissé tomber le GridView.

    fichier xml:
    <rss version="2.0">
    <channel>
    <item>
    <title> </title>
    ....
    </item>
    </channel>
    </rss>

    Maintenant ce que je veux faire c'est afficher mon fichier xml dans un tableau avec un fichier xsl.
    Je veux mettre un lien sur title.
    Quand je click sur un titre, je veux que ça affiche le contenu de tous les éléments dans des textbox afin que je puisse faire un modif.
    Au ça revient à créer soi même son gridview.
    déjà comment on fait pour faire le lien????????????????

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