2009-03-13 11 views
0

Je rencontre des problèmes avec ma logique de programme qui parcourt une collection de données existant dans deux ListView distincts. Après avoir bouclé et extrait les données de ListView, j'ajoute ensuite tout dans un fichier texte délimité par des virgules (CLOSEULDCONFIG.TXT).Données erronées récupérées à partir de ListView

La première fois que j'exécute cette logique, tout fonctionne comme il se doit. Si j'exécute à nouveau cette logique, j'obtiens 2 copies de ce qui est dans ListView. Chaque fois que je parcours cette logique, le nombre de copies des éléments ListView précédemment ajoutés est augmenté de 1.

Ceci est indésirable car je souhaite ajouter le même nombre d'éléments que celui que j'ai dans ma ListView à mon fichier texte. Quelqu'un peut-il repérer ce qui ne va pas avec mes instructions foreach imbriquées qui en est la cause?

     // HAZMAT PACKAGE ERROR LISTVIEW ITEMS    
         foreach (ListViewItem HazPackErrItems in HazmatPackageErrorListview.Items) 
         { 
          bool first = true; 
          foreach (ListViewItem.ListViewSubItem HazPackErrSub in HazPackErrItems.SubItems) 
          { 
           // removes the first element of each comma delimited string 
           if (first) 
            first = false; 
           else 
            CloseULDSubmitLogDataResponseHazpackerrCloseULDConfig += " " + HazPackErrSub.Text + ","; 
          } 
         } 

         // HAZMAT WEIGHT AND COUNT COLLECTED LISTVIEW ITEMS 
         foreach (ListViewItem HazWeightAndCountItems in HazmatWeightAndCountListview.Items) 
         { 
          bool first = true; 
          foreach (ListViewItem.ListViewSubItem HazWeightAndCountSub in HazWeightAndCountItems.SubItems) 
          { 
           // removes the first element of each comma delimited string 
           if (first) 
            first = false; 
           else 
            CloseULDSubmitLogDataResponseHazWeightAndCountCloseULDConfig += " " + HazWeightAndCountSub.Text + ","; 
          } 
         } 

         using (System.IO.StreamWriter sw = new System.IO.StreamWriter("CLOSEULDCONFIG.TXT", true)) 
         { 
          if (!AlreadyExists) 
          { 
           sw.WriteLine(PresetNameConfig + 
           CloseULDSubmitLogDataRequestCloseULDConfig + 
           CloseULDSubmitLogDataResponseCloseULDConfig + 
           CloseULDSubmitLogDataResponseHazpackerrCloseULDConfig + 
           CloseULDSubmitLogDataResponseHazWeightAndCountCloseULDConfig + 
           CloseULDDateTimeConfig); 
          } 
         } 

Répondre

1

Si je ne me trompe pas, vous ouvrez le fichier à ajouter, au lieu de l'écraser. Avez-vous vérifié le fichier lui-même pour voir si les données sont en cours de duplication?