A voir également:
- La référence d'objet n'est pas définie à une instance d'un objet
- Vente objet occasion entre particulier - Guide
- Identifier un objet à partir d'une photo - Guide
- Reference pto - Accueil - Box & Connexion Internet
- Echec de l'acquisition de l'objet com de virtualbox ✓ - Forum Windows
- Objet interdit en cabine ryanair - Guide
3 réponses
Utilisateur anonyme
Modifié par Whismeril le 30/03/2016 à 10:46
Modifié par Whismeril le 30/03/2016 à 10:46
Bonjour
tout d'abord, c'est bien domage d'utiliser linq et de construire ta collection "à la main".
Intéresse toi au binding.
https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Le message d'erreur en lui même, veut dire qu'au moins un objet de la ligne vaut null (donc n'est pas définit)
Dans
dataGridView1.Rows[i] doit exister au vu de ta boucle
Donc soit
Pour savoir précisémement ou se situe le problème, quand le programme plante, survolle la ligne avec la souris et attends à chauqe élément se que t'indique l'info bulle. Si ça n'est pas assez parlant, espionne chaque partie
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
tout d'abord, c'est bien domage d'utiliser linq et de construire ta collection "à la main".
Intéresse toi au binding.
https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Le message d'erreur en lui même, veut dire qu'au moins un objet de la ligne vaut null (donc n'est pas définit)
Dans
d.codeart = dataGridView1.Rows[i].Cells[0].Value.ToString();
dataGridView1.Rows[i] doit exister au vu de ta boucle
Donc soit
- la collection de Cells n'est pas initialisée (normalement si)
- soit elle est vide, il n'y a donc pas de Cells[0] dans la collection (théoriquement ça n'est pas possible non plus)
- Soit il n'y a rien d'écrit dans la cellule et donc Value est null (probablement ça), et dans ce cas le binding l'aurait traité à ta place....
Pour savoir précisémement ou se situe le problème, quand le programme plante, survolle la ligne avec la souris et attends à chauqe élément se que t'indique l'info bulle. Si ça n'est pas assez parlant, espionne chaque partie
dataGridView1.Rows[i] dataGridView1.Rows[i].Cells[0] dataGridView1.Rows[i].Cells[0].Value
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Th3Rimas
Messages postés
12
Date d'inscription
mardi 29 mars 2016
Statut
Membre
Dernière intervention
2 mai 2016
31 mars 2016 à 12:35
31 mars 2016 à 12:35
Utilisateur anonyme
31 mars 2016 à 13:57
31 mars 2016 à 13:57
Ça ne répond pas à ma question, dans le commentaire numéro 6, je t'ai proposé 4 façons de faire, laquelle veux tu que je te montre?
Je ne redemanderai pas une fois de plus.
Je ne redemanderai pas une fois de plus.
30 mars 2016 à 11:47
d.codeart = dataGridView1.Rows[i].Cells[0].Value.ToString();
Au :
d.codeart = dataGridView1.Rows[i].Cells[0].ToString();
mais j'avais le meme probleme au 2eme ligne et je l'ai changer comme celui la mais un autre problem :
d.Qte = int.Parse(dataGridView1.Rows[i].Cells[3].ToString());
il m'a dit que le format de la chaine d'entre est incorrect
30 mars 2016 à 11:54
Là encore, le binding gérerait ça à ta place.
Je trouve toujours inutile de disposer d'outils performants et de ne pas s'en servir.....
30 mars 2016 à 12:02
30 mars 2016 à 12:32
Sinon vérifier que les cellules ne soient pas vides avant de tenter des affectations ou des conversions, avec un if sur Value, ou une fusion null https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator ou un opérateur ternaire https://docs.microsoft.com/fr-fr/dotnet/csharp/language-reference/operators/conditional-operator
Sinon tu peux aussi faire TryParse, mais tu devras aussi faire un if dessus
31 mars 2016 à 09:49