Null Reference Exception après un refresh , une idée ?

Résolu
Metadeth Messages postés 2 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 janvier 2009 - 20 janv. 2009 à 10:54
Metadeth Messages postés 2 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 janvier 2009 - 20 janv. 2009 à 13:36
Bonjour à tous.
Vu que c'est mon premier message sur ce forum, j'en profite pour me présenter, : Metadeth, développeur Web à la base. Dans le cadre de mes études, je tends actuellement à m'étendre sur du .Net, et j'aime beaucoup C#.

Ce qui me conduit ici :

Je fais actuellement une application qui va chercher des choses sur une base de données, créés des objets par la même occasion, bref, tout ca marche parfaitement.

J'utilise donc ensuite une liste déroulante ou je met le nom des serveurs ( que je recupere sur la bdd ), chacun représentant un objet.

Au chargement du formulaire ( propriété load ), je fais donc appel à la fonction suivante pour remplir ma liste déroulante :






private







void


 load_liste()


{



dt_consultServeur.Columns.Clear();



dt_consultServeur.Rows.Clear();



dt_consultServeur.Columns.Add(




"Serveur"
, 

typeof
(

String
));









MessageBox
.Show(

BMSC


.GetLesServeurs().Count.ToString());






foreach
 (

Serveur
 unServeur 

in



BMSC


.GetLesServeurs())


{





dt_consultServeur.Rows.Add(unServeur.GetNomServeur(), unServeur.GetDescriptionServeur());






}




dt_consultServeur.DefaultView.Sort = 



"Serveur"

;


cb_consultServeur.DataSource = dt_consultServeur;



cb_consultServeur.DisplayMember = 



"Serveur"

;


cb_consultServeur.ValueMember = 



"Serveur"

;


afficherInfos();







//cb_consultServeur.Focus();


}





Mon code semble fonctionner à merveille. Toutefois,

mon formulaire dispose aussi d'un bouton Raffraichir, qui rappelle cette méthode pour remettre à jour la liste. Le code est donc tout à fait le même. Mais là, j'obtiens une NullReferenceException sur la ligne : dt_consultServeur.Rows.Add(unServeur.GetNomServeur(), unServeur.GetDescriptionServeur());

En voyant mes points d'arrets, mes méthodes de classe renvoient bien quelque chose pourtant...
Au final, le premier tour de foreach se passe parfaitement ( un serveur fonctionne bien ), mais le reste non ( j'ai vu ca grave au try catch ).

C'est une erreur à laquelle je suis souvent confronté, et que je ne m'explique pas.

Quelqu'un pourrait-il m'éclairer ?

1 réponse

Metadeth Messages postés 2 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 13:36
Malgré le flux considerable de réponses ( :p )

Voici la solution que j'ai finit par trouvé.

Le fait est que j'instanciais ma DataTable à l'ouverture du formulaire, et qu'il fallait le refaire avant de pouvoir la réutiliser avec de nouvelles données semblerait-il.

Le topic suivant ( http://www.developpez.net/forums/d381286/dotnet/csharp/erreur-system-nullreferenceexception-portant-dobjet-null/ ) m'a mit sur la piste.

Apres test, il s'avère que la déclaration et instanciation de la DataTable fonctionne sans aucun soucis si placée dans la fonction. En gros, c'était juste une mauvaise habitude que j'avais prise.

D'ailleurs, l'exception ne concernait pas mes objets de type Serveur ! Mais bel et bien ceux de la DataTable.

Si jamais quelqu'un rencontre ce soucis, ca vient de là =)
3
Rejoignez-nous