|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 4 ![]() |
Bonjour,
j'ai développé un programme avec Visual Studio 2010 en WinForm. Dans ce programme avec l'interface je rajoute un DataGridView (que je renomme). Via la fenêtre de propriété je renseigne le champ "DataSource" en le faisant correspondre avec un objet que j'ai créé avec tout plein de propriétés. Puis je vais dans le champ "Columns" pour renommer proprement mes colonnes de mon DataGridView. Enfin dans mon code je construit tous mes objets que je stocke dans une List<monobjet>. Jusqu'ici pas de soucis. Mais au moment de mettre ma List dans mon DataGridView j'ai une exception fatale... pim pam poum badaboum... La référence d'objet n'est pas définie à une instance d'un objet. (merci le déboggeur Visual Studio). Du coup, je regarde ce que contient mon DataGridView est il est à NULL. Voici le morceau de code où ça pète : Code :
dgv_ResultSearchProcs.DataSource = _listeSearchProcs; Là où je suis étonné c'est que j'ai déjà fait des trucs de ce genre et j'ai jamais eu de soucis et le code marche parfaitement sur d'autres projets. Normalement ce n'est pas au logiciel de s'occuper d'initialiser le DataGridView et compagnie quand je le rajoute via l'interface dans le InitializeComponent ? J'ai jeté un coup d'oeil dans le InitializeComponent et tout me parait bon... (je me suis amusé à comparer une version du logiciel qui fonctionnait avec celle qui fonctionnait pas) Ca fait 3h que je suis dessus je commence à m'agacer du coup je viens vous demander de l'aide. Un oeil extérieur est toujours plus efficace que le sien... Bien sur si il y a besoin de plus de code ou d'informations n'hésitez pas. Merci beaucoup pour votre aide |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Bonjour,
Normalement, lorsque les éléments sont créés via le designer, l'instanciation ce fait de manière automatique, en générant le code comme il faut dans InitializeComponent (comme tu l'as très bien souligné Maintenant, il faudrait avoir plus de détail. Le code de ton formulaire ou du contrôle utilisateur que tu définis. A l'aveugle, je dirais que tu essaies d'initialiser ton DataGridView dans le constructeur de ton formulaire, et avant l'appel de InitializeComponent (ou que cet appel est carrément manquant!) |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonjour,
Je dirais que tu as écris cette ligne : Code :
dgv_ResultSearchProcs.DataSource = _listeSearchProcs; Si c'est pas ça, il faut nous envoyer du code... [EDIT] : Grillé
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#4 | ||||||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 4 ![]() |
merci pour vos réponses et voici plus de détails au niveau de mon code.
En tout premier j'ai : Code :
Code :
La voici : Code :
|
||||||
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
D'un rapide coup d'oeil, je ne vois rien qui me choque.
Question subsidiaire : tu ne nous fais pas la blague d'assigner une nouvelle valeur à ton datagridview quelque part dans ton code (et je dirais au hasard : null ? |
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 4 ![]() |
euh....
![]() alors j'avais mis des : datagrid.datasource = null; à certains endroits notamment dans les catch en cas d'erreur... J'ai mis toutes ces lignes en commentaire et maintenant cela fonctionne... Mais cela fait planter d'autres fonctionnalités mais c'est pas le sujet... Du coup, c'est quoi le morceau de code magique pour vider ma datasource afin d'en réassigner une autre... Exemple, je charge ma datasource tout bien. Après je clique sur le nom d'une colonne pour trier. Du coup, je voudrais vider le datasource pour lui remettre avec les valeurs triées. En tout cas merci beaucoup même si je comprends pas pourquoi la première version fonctionnait et pas la nouvelle. EDIT : Pour essayer de comprendre. Je reviens sur mon tri. Je charge mon datagridview comme expliqué plus haut. Quand je clique sur l'entête d'une colonne je déclenche une méthode qui va récupérer ma liste d'objet, les trier et afin de les remettre dans mon datagridview je fais : Code :
Alors pourquoi "dgv_ResultEudoChamps.DataSource = null;" j'avais ce problème avant ? |
||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Au vue de l'erreur que tu avais, tu avais très certainement écrit un
en voulant écrire Code :
dgv_ResultEudoChamps.DataSource = null; |
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 4 ![]() |
grillé
![]() oui je viens de m'en rendre compte en faisant des tests et en mettant mes lunettes ![]() c'est exactement ce que je faisais ! En tout cas merci beaucoup pour votre aide et désolé pour le dérangement pour si peu
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com