Vider un datarow[] [Résolu]

Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
- - Dernière réponse : bidou_01
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
- 28 sept. 2007 à 15:57
Bonjour a tous,
Voici mon problème:

J'ouvre un fichier xml, avec lequel je rempli un dataset. Je créé ensuite un table de row (datarow[]) dans le lequel je stoque des les ligne de mon dataset (enfin datatable) sélectionnées par la commande select. Ensuite j'affiche ce datarow[] dans une listview. Donc pas de problème tout cela fonctionne tres bien. Voici le code :

                xmlDocDvd.Load("basedvd.xml");                                             //chargement fichier xml
                XmlNodeReader xnr = new XmlNodeReader(xmlDocDvd);     
                myDsDvd.ReadXml(xnr);                                                          //remplissage du dataset

               
                DataRow[] tabRowDvd;     
               
                tabRowDvd = myDsDvd.Tables[0].Select("emprunteur='maison'"); //remplissage de mon table de ligne avec un filtre sur la table.
                //puis affichage des données du tabRowDvd dans une listview.

Cependant je rappel cette méthode a un autre endroite afin de faire une mise de la listview. Le problème est que les nouvelles données viennent se mettrent à la suite des données précédante dans mon tabRowDvd.
Or je souhaiterais que les enciennes données soient écrasées puis remplacées par les nouvelles.

Donc comment réinitialiser mon tabRowDvd?

Voila , en espèrant être clair, merci à vous :)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
3
Merci
Ca y'est j'ai trouvé en écrivant les lignes de ma réponse au dessus. Comme quoi les c'est au plus pres du mur qu'on voit moins le mur.

En fait, a chaque appel de ma méthode, je reparcour le fichier xml que je....recharge dans mon dataset ....a la suite :)
Donc un ptit myDsDvd.Clear() et ca roule. Merci à toi, bonne journée.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de skysee
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
0
Merci
  xmlDocDvd.Load("basedvd.xml");                                             //chargement fichier xml
                XmlNodeReader xnr = new XmlNodeReader(xmlDocDvd);     
                myDsDvd.ReadXml(xnr);                                                          //remplissage du dataset

               
                DataRow[] tabRowDvd;     
               
                tabRowDvd = myDsDvd.Tables[0].Select("emprunteur='maison'"); //remplissage de mon table de ligne avec un filtre sur la table.
                //puis affichage des données du tabRowDvd dans une listview.

[...]

tabRowDvd = null;
tabRowDvd = myDsDvd.Tables[0].Select("emprunteur='apparte'");

?
 
Commenter la réponse de bidou_01
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
0
Merci
Le problème est bien la et je comprend vraiment pas: Voici ma méthode complète :

private void initAffichage()
        {
            int nbLigneTabDvdMaison = 0;
            int nbLigneTabDvdEmp = 0;

            try
            {
                xmlDocDvd.Load("basedvd.xml");
                XmlNodeReader xnr = new XmlNodeReader(xmlDocDvd);
                myDsDvd.ReadXml(xnr);               

                //affichage des dvd a la maison
                DataRow[] tabRowDvd;
                tabRowDvd = null;
                tabRowDvd = myDsDvd.Tables[0].Select("emprunteur='maison'");
                nbLigneTabDvdMaison = tabRowDvd.Length;

                for (int i =0 ; i < nbLigneTabDvdMaison; i++)
                {
                    ListViewItem ItemDvdMaison = new ListViewItem(tabRowDvd[i][0].ToString());
                    listViewDvd.Items.Add(ItemDvdMaison);
                }
                //-------------------------------
                //affichage des dvd prêté
                DataRow[] tabRowEmp;
                tabRowEmp = null;
                tabRowEmp = myDsDvd.Tables[0].Select("emprunteur<>'maison'");
                nbLigneTabDvdEmp = tabRowEmp.Length;
                for (int i1 = 0; i1 < nbLigneTabDvdEmp; i1++)
                {
                    ListViewItem ItemDvdEmp = new ListViewItem(tabRowEmp[i1][0].ToString());
                    ItemDvdEmp.Text = tabRowEmp[i1][0].ToString();
                    ItemDvdEmp.SubItems.Add(tabRowEmp[i1][1].ToString());
                    listViewPret.Items.Add(ItemDvdEmp);
                }
                //-------------------------------

            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message.ToString());
            }
        }

La première fois qu j'appel initAffichage(), la variable nbLigneTabDvdMaison prend 78 apres initialisation par nbLigneTabDvdMaison = tabRowDvd.Length;
La première fois qu j'appel initAffichage(), la variable nbLigneTabDvdEmp prend 4 apres initialisation par tabRowEmp = myDsDvd.Tables[0].Select("emprunteur<>'maison'");

Et à chaque fois que je rappel initAffichage nbLigneTabDvdMaison prend 78 llignes de plus que la fois précédente et nbLigneTabDvdEmp prend 4 lignes de plus que la fois précédente. Alors que les tableau sont initialiser a null.

Bref je comprend plus
Commenter la réponse de skysee
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
0
Merci
Si tu fais un débug en pas à pas, les variables nbLigneTabDvdMaison et nbLigneTabDvdEmp sont bien initialisées à 0 et tabRowEmp à null ?

Bidou_01
Commenter la réponse de bidou_01
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
0
Merci
Oui il passe bien a null, mais des qu'il est initialiser le problème arrive...j'avoue ne pas comprendre, ca viens obligatoirement de mon tabRowDvd = myDsDvd.Tables[0].Select("emprunteur='maison'");, je cherche je cherche...
Commenter la réponse de skysee
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
0
Merci
Ah ouai effectivement j'ai pas tilté sur le Load du dataSet dans ta fonction !! :)

Bidou_01
Commenter la réponse de bidou_01