Problème de controls.count avec 1 page rattachee a un mastar page

Messages postés
52
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2007
- - Dernière réponse : danielt92
Messages postés
16
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
17 mai 2006
- 13 janv. 2006 à 23:35
Bonjour a tous

J'ai une page "test.aspx" rattachée au masterpage de mon site.
dans la page "test.aspx", je fais un postbackurl sur une autre page..

et dans cette autre page quand j'essaie de récupérer les valeurs des controls (previouspage.findcontrol...) de ma page "test.aspx", je n'y arrive pas & un controls.count me donne la valeur 1!! alors que j'ai 5 controles dessus!

(d'apres mes tests, ca a l'air de venir du fait qu'il n'y a qu'un form, situé dans la masterpage et que des content dans toutes les pages du site)

Sauriez-vous comment récupérer les valeurs des controles?
merci
Afficher la suite 

1 réponse

Messages postés
16
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
17 mai 2006
0
Merci
Bonjour,
La méthode FindControl n'est pas récursive, en effet, d'où ton problème.
Voici un code qui va fonctionner, mais çà me semble maladroit de passer par FindControl,

If (Page.PreviousPage IsNot Nothing) Then
Dim txtNom As TextBox = Page.PreviousPage.Controls(0).FindControl("form1").FindControl("ContentPlaceHolder1").FindControl("txtNom")
Label1.Text = txtNom.Text
End If

Si tu t'attend à venir d'une previous page particulière, c'est plus simple de coupler fortement les 2 pages.
Il te faut dans la page source (Page1):
- définir des propriétés publique permettant d'exposer les éléments à récupérer depuis la page de destination
par exemple :

Public ReadOnly Property Nom() As String
Get
Return txtNom.Text
End Get
End Property

Dans la page de destination (Page2):
- rajouter une directive dans la page .ASPX
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>
- Lire les membres de la previous page comme ceci :
Label1.Text = CType(Page.PreviousPage, Page1).Nom ou
Label1.Text = ((Page1)Page.PreviousPage).Nom

Cordialement,
Daniel - MCSD.NET, MCT
Commenter la réponse de danielt92