IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

problème avec findControl


Sujet :

ASP.NET

  1. #1
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut problème avec findControl
    Salut,
    [EDIT]
    finalement, j'arrive à récupérer mon control mais en faisant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         HiddenField password = (HiddenField)Page.FindControl("ctl00").FindControl("form1").FindControl("ContentPlaceHolder1").FindControl("paper_form_panel").FindControl("password");
    je trouve assez peu élégant et je trouve que ça enlève toute l'utilité de findControl puisqu'on doit là aussi décrire l'arborescence...
    Peut être que je l'utilise de travers?
    Sinon, pourquoi ne pas se créer une fonction récursive? Y-a t-il une contre indication?
    [/EDIT]

    J'essaie de récupèrer un control avec findControl mais j'ai toujours null en valeur de retour...

    page aspx:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:HiddenField ID="password" runat="server" />
    code C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HiddenField hf = (HiddenField)Page.FindControl("password");
    le control se trouve dans d'autres control (Panel, PlaceHolder,...) Mais je suppose que c'est recursif...

    Merci d'avance pour vos éclairages...

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    je te conseille la lecture de l'excellent tutoriel de LuteceFalco :

    http://lutecefalco.developpez.com/tu...-page-asp-net/

    Tu y trouveras surement une psite de reflexion qui s'accordera a ton souci.

    Bon courage, et bon code à toi,

    Edit : Le find control n'est pas recursif.

  3. #3
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Citation Envoyé par julien.63 Voir le message
    Mais je suppose que c'est recursif...
    Hé bien non, ce n'est pas récursif... un petit bout de code pour régler le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            public Control GetControlById(Control ObjContainer, string IdControl)
            {
                Control ToFindControl = null;
                if(ObjContainer.ID != null && ObjContainer.ID.Equals(IdControl))
                {
                    return ObjContainer;
                }
     
                foreach(Control _objC in ObjContainer.Controls)
                {
                    ToFindControl = GetControlById(_objC, IdControl);
                    if(ToFindControl != null)
                    {
                        return ToFindControl;
                    }
                }
     
                return ToFindControl;
            }

  4. #4
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    ok, merci pour les infos.
    je vais aller voir le tutoriel indiqué. Merci pour le lien.
    Et merci également pour le bout de code.

    D'après vous, y-a t-il une raison pour que la récursivité ne soit pas disponible dans findControl?

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par julien.63 Voir le message
    ok, merci pour les infos.
    je vais aller voir le tutoriel indiqué. Merci pour le lien.
    Et merci également pour le bout de code.

    D'après vous, y-a t-il une raison pour que la récursivité ne soit pas disponible dans findControl?
    Pour moi, t'es pas censé utiliser findControl pour trouver un control qui ne se trouve pas dans le control où tu appelles cette méthode

  6. #6
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    peut être une trop grosse consommatino de ressources si l'argument récursif était possible... Ils ont peut etre pas réussi à optimiser le truc suffisemment..


    (je m'avance beaucoup là...)

  7. #7
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    En fait, FindControl travaille par rapport au Conteneur de nommage... on peut donc récupéré un contrôle en fonction de son ID avec les $ ou : comme séparateur...

    Imaginons un controle A dans un controle B qui est dans la page, on peut demander Page.FindControl('B:A') pour le récupérer.

  8. #8
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    ok, merci pour vos réponses et les informations.
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec FindControl
    Par cssiste dans le forum ASP.NET
    Réponses: 7
    Dernier message: 03/06/2008, 18h32
  2. Réponses: 1
    Dernier message: 31/08/2006, 11h48
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo