Pb FindControl

Le
Jean Claude
Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut m'aider

Merci
Jean Claude
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU [MVP]
Le #12214931
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans
mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Jean Claude
Le #12214891
Bonjour Gilles

OK mais si j'écris : thisImage=Me.Parent.FindControl("Image" & i)
j'ai le message d'erreur: la référence d'objet n'est pas définie à une
instance d'objet

et poutant Image1 est bien sur la page en cours

Cordialement
Jean Claude

"Gilles TOURREAU [MVP]" news:
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans
mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Patrice
Le #12214881
Gilles voulait dire le parent de tes images. Me.Parent est le contrôle
parent de la page (qui donc n'existe pas).

Si le contrôle est par exemple "MyName" : Me.MyName.FindControl("etc...")
pour que ce soit la méthode FindControl du contrôle qui contient les images
qui soit appelé....

--
Patrice

"Jean Claude" news: 478b263c$0$872$
Bonjour Gilles

OK mais si j'écris : thisImage=Me.Parent.FindControl("Image" & i)
j'ai le message d'erreur: la référence d'objet n'est pas définie à une
instance d'objet

et poutant Image1 est bien sur la page en cours

Cordialement
Jean Claude

"Gilles TOURREAU [MVP]" de news:
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans
mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr






Jean Claude
Le #12214871
Bonjour Patrice

En fait j'ai trouvé il faut écrire :
thisImage=Master.FindControl("CphContenu").FindControl("Image" & i)

Par contre je voudrais changer les propriétés de Image1 et suite

Je ne vois pas comment écrire ce code, par exemple je veux changer le .width

Jean Claude

"Patrice" %
Gilles voulait dire le parent de tes images. Me.Parent est le contrôle
parent de la page (qui donc n'existe pas).

Si le contrôle est par exemple "MyName" : Me.MyName.FindControl("etc...")
pour que ce soit la méthode FindControl du contrôle qui contient les
images qui soit appelé....

--
Patrice

"Jean Claude" news: 478b263c$0$872$
Bonjour Gilles

OK mais si j'écris : thisImage=Me.Parent.FindControl("Image" & i)
j'ai le message d'erreur: la référence d'objet n'est pas définie à une
instance d'objet

et poutant Image1 est bien sur la page en cours

Cordialement
Jean Claude

"Gilles TOURREAU [MVP]" de news:
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans
mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr










Gilles TOURREAU [MVP]
Le #12214861
"Jean Claude" news:478b38ee$0$865$
Bonjour Patrice

En fait j'ai trouvé il faut écrire :
thisImage=Master.FindControl("CphContenu").FindControl("Image" & i)

Par contre je voudrais changer les propriétés de Image1 et suite

Je ne vois pas comment écrire ce code, par exemple je veux changer le
.width

Jean Claude

"Patrice" %
Gilles voulait dire le parent de tes images. Me.Parent est le contrôle
parent de la page (qui donc n'existe pas).

Si le contrôle est par exemple "MyName" : Me.MyName.FindControl("etc...")
pour que ce soit la méthode FindControl du contrôle qui contient les
images qui soit appelé....

--
Patrice

"Jean Claude" news: 478b263c$0$872$
Bonjour Gilles

OK mais si j'écris : thisImage=Me.Parent.FindControl("Image" & i)
j'ai le message d'erreur: la référence d'objet n'est pas définie à une
instance d'objet

et poutant Image1 est bien sur la page en cours

Cordialement
Jean Claude

"Gilles TOURREAU [MVP]" de news:
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris dans
mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
















Bonjour JC,

Dim img As Image

img = CType(Master.FindControl("CphContenu").FindControl("Image" & i),
Image)
img.Width...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Jean Claude
Le #12214821
Merci Gilles c'est OK

Par contre je veux afficher une image à chaque clic d'un bouton, j'ai écris
:
dans le page load j'ai :
If not IsPostBack then
session("num")=0
End if
j'ai mis le num en session car je dois récuperer le num pour d'autres
procédures
Protected Sub BtnAutre_click ....................
Dim I as integer=0
If Session("Num")<=7 then
Session("Num")=Session("Num")+1
I=Session("Num")
....................
End if
End sub

Et cela m'affiche deux images à la fois
je voudrais en afficher qu'une à la fois

Jean Claude
"Gilles TOURREAU [MVP]" news:
"Jean Claude" news:478b38ee$0$865$
Bonjour Patrice

En fait j'ai trouvé il faut écrire :
thisImage=Master.FindControl("CphContenu").FindControl("Image" & i)

Par contre je voudrais changer les propriétés de Image1 et suite

Je ne vois pas comment écrire ce code, par exemple je veux changer le
.width

Jean Claude

"Patrice" %
Gilles voulait dire le parent de tes images. Me.Parent est le contrôle
parent de la page (qui donc n'existe pas).

Si le contrôle est par exemple "MyName" :
Me.MyName.FindControl("etc...") pour que ce soit la méthode FindControl
du contrôle qui contient les images qui soit appelé....

--
Patrice

"Jean Claude" de news: 478b263c$0$872$
Bonjour Gilles

OK mais si j'écris : thisImage=Me.Parent.FindControl("Image" & i)
j'ai le message d'erreur: la référence d'objet n'est pas définie à une
instance d'objet

et poutant Image1 est bien sur la page en cours

Cordialement
Jean Claude

"Gilles TOURREAU [MVP]" message de news:
Le Sun, 13 Jan 2008 06:44:18 +0100, Jean Claude

Bonjour

J'ai un problème avec l'utilisation de FindControl, quand j'écris
dans mon
code :
For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Pour trouver le contrôle
ImageX
' Traitement
Next

Si je teste, il ne trouve pas le controle Image1, ni les autres

Pouverz-vous me dire pourquoi, je ne trouve rien sur MSDN qui peut
m'aider

Merci
Jean Claude






Bonjour JC,

Quel est le contrôle parent de tes images ? A mon avis ce n'est pas la
page (Me)...
Il faut donc utiliser la syntaxe suivante :
Me.MonControlParent.FindControl(...)

@+

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
















Bonjour JC,

Dim img As Image

img = CType(Master.FindControl("CphContenu").FindControl("Image" & i),
Image)
img.Width...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Gilles TOURREAU [MVP]
Le #12214771
"Jean Claude" news:478c71dc$0$883$
Merci Gilles c'est OK

Par contre je veux afficher une image à chaque clic d'un bouton, j'ai
écris :
dans le page load j'ai :
If not IsPostBack then
session("num")=0
End if
j'ai mis le num en session car je dois récuperer le num pour d'autres
procédures
Protected Sub BtnAutre_click ....................
Dim I as integer=0
If Session("Num")<=7 then
Session("Num")=Session("Num")+1
I=Session("Num")
....................
End if
End sub

Et cela m'affiche deux images à la fois
je voudrais en afficher qu'une à la fois

Jean Claude



Bonjour,

Peux-tu montrer plus de code ? Car là il est très difficile de comprendre la
relation entre le clic du bouton et l'affichage des images...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Jean Claude
Le #12214711
Bjr Gilles

Voici mon code :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

If Not IsPostBack Then

Session("Num") = 0

LblTitre1.Text = "Notre Savoir-Faire ..."

Image1.Visible = False

LblTexte2.Visible = False

TxtTexte2.Visible = False

Image2.Visible = False

End If

End Sub

Protected Sub BtnAutre_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtnAutre.Click

Dim I As Integer = Session("Num")

I = Session("Num") + 1

Dim thisImage As Control =
Master.FindControl("cphContenu").FindControl("Image" & I)

Dim imgUC As System.Web.UI.WebControls.Image =
thisImage.FindControl("Image" & I)

imgUC.Visible = True

Dim thisTitre As Control =
Master.FindControl("cphContenu").FindControl("LblTexte" & I)

Dim TitreUC As System.Web.UI.WebControls.Label =
thisTitre.FindControl("LblTexte" & I)

TitreUC.Visible = True

Dim thisTexte As Control =
Master.FindControl("cphContenu").FindControl("TxtTexte" & I)

Dim TexteUC As System.Web.UI.WebControls.TextBox =
thisTexte.FindControl("TxtTexte" & I)

TexteUC.Visible = True

End Sub


A chaque clic du bouton, je veux afficher Image1, Image2, etc...

Cordialement
J Claude

"Gilles TOURREAU [MVP]" news:
"Jean Claude" news:478c71dc$0$883$
Merci Gilles c'est OK

Par contre je veux afficher une image à chaque clic d'un bouton, j'ai
écris :
dans le page load j'ai :
If not IsPostBack then
session("num")=0
End if
j'ai mis le num en session car je dois récuperer le num pour d'autres
procédures
Protected Sub BtnAutre_click ....................
Dim I as integer=0
If Session("Num")<=7 then
Session("Num")=Session("Num")+1
I=Session("Num")
....................
End if
End sub

Et cela m'affiche deux images à la fois
je voudrais en afficher qu'une à la fois

Jean Claude



Bonjour,

Peux-tu montrer plus de code ? Car là il est très difficile de comprendre
la relation entre le clic du bouton et l'affichage des images...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Patrice
Le #12214701
Bonjour,

Je ne suis pas sûr de comprendre pourquoi tu recherches le même contrôle
"Image" & I à la fois dans cphContenu puis justement dans le contrôle que tu
as trouvé ne connaissant pas la structure de la page.
Sinon je pense que le problème est peut-être que tu rends l'image n° I
visible sans masquer la précédente (ou les deux images sont visibles dès le
premier appel ?).

Si je reprends au début, il semblerait que tu veuilles afficher une seule
image à la fois et passer à la suivante à chaque click du bouton. Un méthode
qui me semble plus simple serait d'avoir un seul contrôle image et de lui
indiquer à chaque click du bouton quelle est l'image qu'il doit afficher...
On aurait alors dans la page qq chose comme :

<asp:Image ID="Image1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Suivante" />

Et dans le code :

Private Sub ShowNextImage()
Dim Images() As String = {"a", "b", "c"}
Image1.ImageUrl = Server.MapPath("~/images/" &
Images(Session("Num")) & ".jpg")
Session("Num") = (Session("Num") + 1) Mod Images.Length
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Session("Num") = 0
ShowNextImage()
End If
End Sub

Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
ShowNextImage()
End Sub
End Class

"Jean Claude" news: 478dbbe3$0$888$
Bjr Gilles

Voici mon code :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not IsPostBack Then

Session("Num") = 0

LblTitre1.Text = "Notre Savoir-Faire ..."

Image1.Visible = False

LblTexte2.Visible = False

TxtTexte2.Visible = False

Image2.Visible = False

End If

End Sub

Protected Sub BtnAutre_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtnAutre.Click

Dim I As Integer = Session("Num")

I = Session("Num") + 1

Dim thisImage As Control =
Master.FindControl("cphContenu").FindControl("Image" & I)

Dim imgUC As System.Web.UI.WebControls.Image =
thisImage.FindControl("Image" & I)

imgUC.Visible = True

Dim thisTitre As Control =
Master.FindControl("cphContenu").FindControl("LblTexte" & I)

Dim TitreUC As System.Web.UI.WebControls.Label =
thisTitre.FindControl("LblTexte" & I)

TitreUC.Visible = True

Dim thisTexte As Control =
Master.FindControl("cphContenu").FindControl("TxtTexte" & I)

Dim TexteUC As System.Web.UI.WebControls.TextBox =
thisTexte.FindControl("TxtTexte" & I)

TexteUC.Visible = True

End Sub


A chaque clic du bouton, je veux afficher Image1, Image2, etc...

Cordialement
J Claude

"Gilles TOURREAU [MVP]" de news:
"Jean Claude" news:478c71dc$0$883$
Merci Gilles c'est OK

Par contre je veux afficher une image à chaque clic d'un bouton, j'ai
écris :
dans le page load j'ai :
If not IsPostBack then
session("num")=0
End if
j'ai mis le num en session car je dois récuperer le num pour d'autres
procédures
Protected Sub BtnAutre_click ....................
Dim I as integer=0
If Session("Num")<=7 then
Session("Num")=Session("Num")+1
I=Session("Num")
....................
End if
End sub

Et cela m'affiche deux images à la fois
je voudrais en afficher qu'une à la fois

Jean Claude



Bonjour,

Peux-tu montrer plus de code ? Car là il est très difficile de comprendre
la relation entre le clic du bouton et l'affichage des images...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








Jean Claude
Le #12214681
Bjr Patrice

Non, je veux afficher la premiere image Image1 et ensuite Image2 au click du
bouton tout en conservant l'affichage d'Image1 et ainsi de suite Image3
jusqu'à Image7

Jean Claude
"Patrice" %
Bonjour,

Je ne suis pas sûr de comprendre pourquoi tu recherches le même contrôle
"Image" & I à la fois dans cphContenu puis justement dans le contrôle que
tu as trouvé ne connaissant pas la structure de la page.
Sinon je pense que le problème est peut-être que tu rends l'image n° I
visible sans masquer la précédente (ou les deux images sont visibles dès
le premier appel ?).

Si je reprends au début, il semblerait que tu veuilles afficher une seule
image à la fois et passer à la suivante à chaque click du bouton. Un
méthode qui me semble plus simple serait d'avoir un seul contrôle image et
de lui indiquer à chaque click du bouton quelle est l'image qu'il doit
afficher... On aurait alors dans la page qq chose comme :

<asp:Image ID="Image1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Suivante" />

Et dans le code :

Private Sub ShowNextImage()
Dim Images() As String = {"a", "b", "c"}
Image1.ImageUrl = Server.MapPath("~/images/" &
Images(Session("Num")) & ".jpg")
Session("Num") = (Session("Num") + 1) Mod Images.Length
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Session("Num") = 0
ShowNextImage()
End If
End Sub

Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
ShowNextImage()
End Sub
End Class

"Jean Claude" news: 478dbbe3$0$888$
Bjr Gilles

Voici mon code :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs)

If Not IsPostBack Then

Session("Num") = 0

LblTitre1.Text = "Notre Savoir-Faire ..."

Image1.Visible = False

LblTexte2.Visible = False

TxtTexte2.Visible = False

Image2.Visible = False

End If

End Sub

Protected Sub BtnAutre_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtnAutre.Click

Dim I As Integer = Session("Num")

I = Session("Num") + 1

Dim thisImage As Control =
Master.FindControl("cphContenu").FindControl("Image" & I)

Dim imgUC As System.Web.UI.WebControls.Image =
thisImage.FindControl("Image" & I)

imgUC.Visible = True

Dim thisTitre As Control =
Master.FindControl("cphContenu").FindControl("LblTexte" & I)

Dim TitreUC As System.Web.UI.WebControls.Label =
thisTitre.FindControl("LblTexte" & I)

TitreUC.Visible = True

Dim thisTexte As Control =
Master.FindControl("cphContenu").FindControl("TxtTexte" & I)

Dim TexteUC As System.Web.UI.WebControls.TextBox =
thisTexte.FindControl("TxtTexte" & I)

TexteUC.Visible = True

End Sub


A chaque clic du bouton, je veux afficher Image1, Image2, etc...

Cordialement
J Claude

"Gilles TOURREAU [MVP]" de news:
"Jean Claude" de news:478c71dc$0$883$
Merci Gilles c'est OK

Par contre je veux afficher une image à chaque clic d'un bouton, j'ai
écris :
dans le page load j'ai :
If not IsPostBack then
session("num")=0
End if
j'ai mis le num en session car je dois récuperer le num pour d'autres
procédures
Protected Sub BtnAutre_click ....................
Dim I as integer=0
If Session("Num")<=7 then
Session("Num")=Session("Num")+1
I=Session("Num")
....................
End if
End sub

Et cela m'affiche deux images à la fois
je voudrais en afficher qu'une à la fois

Jean Claude



Bonjour,

Peux-tu montrer plus de code ? Car là il est très difficile de
comprendre la relation entre le clic du bouton et l'affichage des
images...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr












Publicité
Poster une réponse
Anonyme