NullReferenceException dans une listview [Résolu]

Signaler
Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009
-
Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009
-
Voici le message d'erreur que j'obtiens sur mon code ci-dessous :

L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur
Message="La référence d'objet n'est pas définie à une instance d'un objet."
Source="App_Web_erkv5gar"
StackTrace:
à page_admin_managers_produits.lsv_lp_manager_ItemUpdating(Object sender, ListViewUpdateEventArgs e)...

Code :
 
ProtectedSub lsv_lp_manager_ItemUpdating(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs)Handles lsv_lp_manager.ItemUpdating
e.NewValues("LigneProduit_lpm") = DirectCast(lsv_lp_manager.EditItem.FindControl("ddl_lp_edit"), DropDownList).SelectedValueEndSub
 

Quelqu'un peut-il m'aider sachant que je travaille sur vs2008 ?

<!-- / message -->

7 réponses

Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009

Euréka !

Protected Sub lsv_lp_manager_ItemUpdating(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs)Handles lsv_lp_manager.ItemUpdating

Dim ddlservice
As DropDownList

ddlservice = lsv_lp_manager.Items(e.ItemIndex).FindControl("ddl_lp_edit")

        e.NewValues("LigneProduit_lpm") = ddlservice.SelectedValue

EndSub

Merci beaucoup pour ton aide.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Il y a un objet null dans ton code

Utilise le debogeur pour le trouver.

Pour mieux le configurer
Debug>Exception
Coches la case throw en face les CLR exceptions  (2ieme ligne)

ProtectedSub lsv_lp_manager_ItemUpdating(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs)Handles lsv_lp_manager.ItemUpdating
 

if(
lsv_lp_manager.EditItem.FindControl("ddl_lp_edit")
!= null) THEN
if(
DirectCast(lsv_lp_manager.EditItem.FindControl("ddl_lp_edit"), DropDownList).SelectedValue
!= null ) then
e.NewValues("LigneProduit_lpm") = DirectCast(lsv_lp_manager.EditItem.FindControl("ddl_lp_edit"), DropDownList).SelectedValue
end if
END if
EndSub  

Il y a deux cas ou ca peut etre null.

Desolé pour le melange de C# et VB.net
Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009

Merci beaucoup pour ce conseil que j'ai appliqué mais j'obtiens le même message d'erreur.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Avec le debugger ca te donnes quelle instruction

Essaye avec les espions dans la fenetre espions
Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009

cela me donne le message suivant :

L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur

sur ddl_lp_edit ou LigneProduit_lpm ou @LigneProduit_lpm

En mode 'insert' mon code fonctionne parfaitement.

Avec une textbox à la place de la dropdownlist, mon update se réalise parfaitement sans code-behind.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Ca m'aide pas beaucoup

lsv_lp_manager.EditItem.FindControl("ddl_lp_edit") est null ??

ou

DirectCast(lsv_lp_manager.EditItem.FindControl("ddl_lp_edit"), DropDownList).SelectedValue

est null?

Regardes sur le site www.asp.net (il y a des exemples de dropdownlist dans les gridviews.
Messages postés
9
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
5 mai 2009

Merci beaucoup pour tes conseils.

J'ai trouvé une seule source qui traite de mon problème. la solution est en C# et très succinte.

Les autres exemples dont tu parles fonctionnent en framework 2.0 mais pas dans la version 3.5 sur une listview. (bug microsoft sur le databinding de la dropdownlist dans une listview)

J'essaie de contourner le problème en modifiant l'updatecommand dans le code.

Bon week-end