Vider un datarow[] [Résolu]

Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Dernière intervention
28 septembre 2007
- 27 sept. 2007 à 19:55 - Dernière réponse :
Messages postés
135
Date d'inscription
dimanche 1 octobre 2006
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 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Dernière intervention
28 septembre 2007
- 28 sept. 2007 à 14:45
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.

Merci skysee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de skysee
Messages postés
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
- 27 sept. 2007 à 20:49
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
Dernière intervention
28 septembre 2007
- 28 sept. 2007 à 04:42
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
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
- 28 sept. 2007 à 06:55
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
Dernière intervention
28 septembre 2007
- 28 sept. 2007 à 14:39
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
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
- 28 sept. 2007 à 15:57
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.