Usercontrole : La référence d'objet n'est pas définie à une instance d'un objet.

coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 9 déc. 2005 à 14:41
Fred_64 Messages postés 10 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 13 décembre 2007 - 13 juin 2006 à 09:26
Bonjour à tous,

Voilà mon problème: je viens de créer une nouvelle application .net et j'ai l'erreur suivante dès que je positionne un usercontrol ?

La référence d'objet n'est pas définie à une instance d'un objet.

Pourtant j'ai une autre application .net avec les mêmes paramêtres et tout fonctionne ? Vous allez me dire qu"il y a sûrement une différence quelque part et je vous l'accorde mais je ne sais ou ?

voici le code de ma page contenant mon usercontrole :


Imports System.Web.UI.UserControl

Imports LibStats

Public
Class accueil1

Inherits System.Web.UI.UserControl


#
Region " Code généré par le Concepteur Web Form "

'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()>
Private
Sub InitializeComponent()

End
Sub



Protected
WithEvents LinkButGestion1
As System.Web.UI.WebControls.LinkButton

'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration
As System.Object



Private
Sub Page_Init(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Init

'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()

End
Sub
#
End
Region



Private
Sub Page_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load



CType(
Me.Page.FindControl("Login11"), login1).Visible =
False



End
Sub


End
Class

Thierry

7 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 déc. 2005 à 15:41
C'est sur cette ligne la :
CType(Me.Page.FindControl("Login11"), login1).Visible = False

que ca plante ?

Ceci vient du fait je suppose que Login11 n'existe pas dans la page, surement car login11 est contenu dans un UC lui meme contenu dans la page ...

si tu as le nom de l'uc tu peux faire :

me.Page.findControl("uc").findControls("login11")

sinon va falloir t'amuser avec la recursivité + reflection pour trouver le bon type : QDB :)


<HR>
Cyril - MVS - MCP ASP<
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
9 déc. 2005 à 15:54
hello Cyril



En fait j'ai modifié ma ligne comme ceci et cela fonctionne maintenant (j'ai supprimé Me.page)



CType(FindControl("Login11"), login1).Visible = True



Ok pour ton explication, j'ai compris !

Merci et à plus


Thierry
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 déc. 2005 à 16:06
ok, donc login11 et dans l'uc courant :) et t'as rajouté l'UC comme un warrior directement à la main, sauf que pour que celui ci soit référence dans le code, il faut repasser en mode design ce qui casse tout le HTML.

j'avais ce meme problème.

Au lieu de faire un findControls tu peux déclarer ton controle dans la classe ...

Protected WithEvents Login11
As Login1

noramlement si j'ai compris ton contexte ca marche :p

<HR>

Cyril - MVS - MCP ASP
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
9 déc. 2005 à 16:18
Ok j'ai essayé avec ta déclaration dans la classe et ça fonctionne. C'est génial!

Encore merci pour cette asctuce.

A+ Cyril et encore merci pour ton aide précieuse.

Thierry
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fred_64 Messages postés 10 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 13 décembre 2007
9 juin 2006 à 12:16
Bonjour j'ai exactement le même pb avec:


Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand


        Dim rowToUpdate As DataSet2.FAMILLERow


        rowToUpdate = DataSet21.FAMILLE.FindByID_FAMILLE(DataGrid1.DataKeys(e.Item.ItemIndex))


        rowToUpdate.LIBELLE = CType(e.Item.FindControl("txtEditItemFamilleName"), TextBox).Text


        SqlDataAdapter1.Update(DataSet21)


        DataGrid1.EditItemIndex = -1


        DataGrid1_Fill()


    End Sub


la ligne en gras me provoque la même erreur '...pas une référence d'objet'


J'avoue ne pas avoir saisi la soluce en C#


 
0
Fred_64 Messages postés 10 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 13 décembre 2007
9 juin 2006 à 12:22
la ligne provoquant l'erreur:
rowToUpdate.LIBELLE = CType(e.Item.FindControl("txtEditItemFamilleName"), TextBox).Text

l'ensemble CType(......).Text me renvoie bien 6 qui est un index valide de famille

J'ai bien vu que ce n'était pas du C# mais étant nouveau sur ce forum je n'ai pas trouvé la fonction 'Edit' de message.

Merci à tous.
0
Fred_64 Messages postés 10 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 13 décembre 2007
13 juin 2006 à 09:26
J'ai trouvé une solution: Je re-fill le dataset en début de sub:
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand

        Dim rowToUpdate As DataSet2.FAMILLERow

        SqlDataAdapter1.Fill(DataSet21)
        rowToUpdate = DataSet21.FAMILLE.FindByID_FAMILLE(DataGrid1.DataKeys(e.Item.ItemIndex))

        rowToUpdate.LIBELLE = CType(e.Item.FindControl("txtEditItemFamilleName"), TextBox).Text

        SqlDataAdapter1.Update(DataSet21)

        DataGrid1.EditItemIndex = -1

        DataGrid1_Fill()

    End Sub

J'aimerai passer le dataset en variable de session dans le prerender du usercontrol mais apparemment c'est impossible quand on travaille au niveau d'un usercontrol car a la compilation cela donne une erreur de type 'enablesessionstate' doit être à true.
Je ne peux pas paramétrer le enablesessionstate de la page car le usercontrol sera utilisé comme webpart sur un site sharepoint.

 

J'espère avoir été clair.

 
0
Rejoignez-nous