2010-07-07 7 views
0

J'ai une application WIndows Forms. J'avais besoin d'un DataGridView alors j'en ai ajouté un. Je suppose que l'utilisateur ajoute des lignes et appuyez sur un bouton de sauvegarde.DataGridView renvoie un trop grand nombre de colonnes

A ce moment je veux sauvegarder toutes les lignes de la grille. Je parcourir toutes les lignes comme ça

foreach (DataGridViewRow item in dataGridView.Rows) 
      { 
      } 

Maintenant le problème. Je l'ai testé avec une ligne dans la grille. La première rangée (que j'ai tapée) vient correctement. Puis vient une autre rangée que je n'ai pas surprise. Toutes les valeurs de cette ligne ont la valeur 1 pour int et null pour la chaîne. et puis vient un rang ce juste nul pour chaque colonne.

EDIT: Puis-je expliquer ce que je voulais faire. J'ai des objets avec 4 propriétés. J'ai la liste de ces objets. Et je veux que l'utilisateur édite et réalise cette liste et les obejcts à l'intérieur,

EDIT2: Mon problème n'est pas d'obtenir les données. Mon problème est que c'est obtenir des données qui n'existe pas. Je l'ai essayé avec 4 lignes maintenant. Donc j'ai classé dans 4 rangées dans la grille.

mon entrée a été

1 2 a 1 
12 3 b 3 
12 4 c 4 
13 5 d 5 

sortie est

1 2 a 1 
1 1 null 1 (why the heck is that one here :() 
12 3 b 3 
12 4 c 4 
13 5 d 5 
null null null null (this row i could live with cause i know where it comes from) 
+0

Vous liez le datagridview à quoi que ce soit? – w69rdy

+0

oui à un DataTable – Markus

+1

Comme l'a dit @Serkan Hekimoglu, parcourez la datatable, pas la dataagridview. – w69rdy

Répondre

1

faire pour votre DataTable dt, dt.AcceptChanges(); et démarrez la boucle dans foreach (DataRow dr dans dt.Rows)

+0

je n'ai pas cette table dans l'état que je crée seulement à la volée pour la création La grille Puis-je expliquer ce que je voulais faire.J'ai des objets avec 4 propriétés.J'ai la liste de ces objets.Et je veux que l'utilisateur édite et réalise cette liste – Markus

+1

donc la meilleure façon est, créer votre datatable manuellement. Définissez vos noms de colonnes, tapez un objet ligne, mettez-le en boucle, définissez les champs de votre ligne et liez-le à gridView.Toutes les modifications effectuées sur gridView peuvent être vues sur vos lignes de table de données.Si vous bouclez votre dt.Rows vous pouvez obtenir des changements –

+0

mon dieu .... iwas si stupide ma méthode de lecture était comme ça var1 = row ["var1] var2 = row [" var1] var3 = row ["var1] var4 = row [" var1] – Markus

1

Il est une nouvelle ligne, vérifiez if (item.IsNewRow) continue;

+0

okay maintenant la ligne avec toutes les valeurs null sont partis! Merci pour ça. Mais je reçois toujours la rangée avec toutes les valeurs 1 éditer: d'accord cela conduit à la mauvaise direction :(j'ai besoin à la fois.Les nouvelles et anciennes lignes – Markus

Questions connexes