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 :

Le DataSet n’excepte pas les changements (gridview et xml)


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Le DataSet n’excepte pas les changements (gridview et xml)
    Bonjour,

    j'ai créé une page avec deux boutons, un gridview; dans mon code j'utilise un datset que je rempli avec un fichier xml qui se trouve dans "app_data".


    le but est :
    appui bouton 1 ==> lecture et remplissage du gridview avec le fichier xml ==> OK (chaque attribut du xml correspond à une colonne du gridview)

    appui sur bouton 2 ==> modification de toutes les cellules de la colonnes "1" ligne par ligne, mise à jour de la gridview et sauvegarde en fichier XML.


    voici les extraits :

    fichier XML pour remplir le dataset et donc par liaison le gridview1....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" standalone="yes" ?> 
     <LDAP_DEV>
      <option adspath="" employeenumber="" cn="" o="" title="" physicaldeliveryofficename="" ou="" manager="" homepostaladdress="" postaladdress="" sn="" postalcode="" uid="" businesscategory="" mail="" l="" givenname="" /> 
      <option adspath="LDAP://ldap/uid=prenom.nom,ou=toto,o=lili,dc=ici,dc=fr" employeenumber="123456" cn="nom prenom" o="maison" title="pole" physicaldeliveryofficename="bureau" ou="service" homepostaladdress="labas" postaladdress="rue" sn="nom" postalcode="99999" uid="prenom.nom" businesscategory="Personnel" mail="prenom.nom@ici.fr" l="ville" givenname="prenom" /> 
     </LDAP_DEV>

    Le bout de code pour la modif du dataset et mise à jour du GridView1.....

    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
            public void Button2_Click(object sender, EventArgs e)
            {
                string valeur_champ = "";
     
                int i = 0;
                DataSet ds = new DataSet();
                ds.ReadXml(Server.MapPath(@"App_data\LDAP_DEV.xml"), XmlReadMode.Auto);
     
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    valeur_champ = row[0].ToString();
                    ds.Tables[0].Rows[i].BeginEdit();
                    valeur_champ = valeur_champ + ",o=nouveau,o=enplus";
                    ds.Tables[0].Rows[i].ItemArray[0] = valeur_champ;
                    ds.Tables[0].Rows[i].EndEdit();
     
                    i++;
                }
     
     
                ds.AcceptChanges();
     
                GridView1.DataSource = ds;
                GridView1.DataBind();
                ds.WriteXml(Server.MapPath(@"App_data\LDAP_DEV1.xml"));
     
            }

    la dernière ligne du code sert à créer un nouveau fichier xml pour voir le xml initial modifié.

    Actuellement, je n'ai aucune erreur quand j’exécute le code mais le fichier xml nouvellement créé est une copie de l'initial sans les modifs qui m’intéressent.

    Je ne trouve pas la solution pour modifier les données dans le dataset.

    est-ce que j'applique le bon principe, ou faut-il que je modifie les données dans le gridvew ou directement dans le fichier XML ?


    Merci de votre aide.

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     foreach (DataRow row in ds.Tables[0].Rows)
                {
                    valeur_champ = row[0].ToString();
                    ds.Tables[0].Rows[i].BeginEdit();
                    valeur_champ = valeur_champ + ",o=nouveau,o=enplus";
                    ds.Tables[0].Rows[i].ItemArray[0] = valeur_champ;
                    ds.Tables[0].Rows[i].EndEdit();
     
                    i++;
                }
    Si la variable i a été crée uniquement pour faire référence chaque ligne, c'est pas la meilleure façon de le faire. Ici tu as déjà la référence de chaque ligne (=row) en faisant foreach, donc pas besoin de [I]ds.Tables[0].Rows.
    Pour revenir au problème. Essayer de faire un AcceptChanges() au niveau de la table, pas au niveau du dataSet.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Bonjour,

    Ramajb, je viens de simplifier mon code avec Row (suppression de i) et j'ai essayé un acceptchange() au niveau de la table.
    Cela ne change pas m'a problèmatique, toujours pas de mise à jour de mon gridview et donc de la sauvegarde de mon XML.

    Je cherche encore !!!!!!

    Merci.

  4. #4
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    row["adspath"] = valeur_champ;
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ds.Tables[0].Rows[i].ItemArray[0] = valeur_champ;
    J’espère t'avoir aidé.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    Bonjour,

    j'avais essayé comme tu me le demandes mais sans resultat.

    Je poste la solution que l'on m'a transmise avec en plus la simplification de foreach.

    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
                DataSet ds = new DataSet();
                ds.ReadXml(Server.MapPath(@"App_data\LDAP_DEV.xml"), XmlReadMode.Auto);
     
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    valeur_champ = row[0].ToString();
                    row.BeginEdit();
                    row[0] = valeur_champ + ",o=nouveau,o=enplus";
                    row.EndEdit();
                }
     
                ds.AcceptChanges();
                GridView1.DataSource = ds;
                GridView1.DataBind();
                ds.WriteXml(Server.MapPath(@"App_data\LDAP_DEV1.xml"));
    cette solution fonctionne.

    Merci pour ton aide.

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

Discussions similaires

  1. [Continuum] ne translate pas les vars du settings.xml
    Par bedouin dans le forum Intégration Continue
    Réponses: 0
    Dernier message: 29/01/2009, 16h11
  2. Requête UPDATE n'applique pas les changements!
    Par tssi555 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/08/2008, 09h17
  3. Réponses: 2
    Dernier message: 16/06/2006, 15h09

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