Vider un datarow[] [Résolu]

Signaler
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
-
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
-
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 :)

6 réponses

Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007

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.
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
  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'");

?
 
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007

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
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Si tu fais un débug en pas à pas, les variables nbLigneTabDvdMaison et nbLigneTabDvdEmp sont bien initialisées à 0 et tabRowEmp à null ?

Bidou_01
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007

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...
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Ah ouai effectivement j'ai pas tilté sur le Load du dataSet dans ta fonction !! :)

Bidou_01