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 :

[2.0][C#]Récupérer l'ID d'un contrôle céé dynamiquement


Sujet :

ASP.NET

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Par défaut [2.0][C#]Récupérer l'ID d'un contrôle céé dynamiquement
    Bonjour tout le monde,
    Je cherche à récupérer l'ID d'un contrôle créer dynamiquement en code-behind.
    Exemple:
    j'ai ajouté un attribut "ID" avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextBox.Attributes.Add("ID", "monTextBox");
    Ors, lorsque j'essai d'accéder à ce contrôle via un FindControl(), je ne peux pas. Dans le code source de ma page, j'ai name=ctl00$ContentPlaceHolder1$GridView1$ctl01$ctl12.
    J'ai consulté la FAQ, et à priori, le seul moyen de pouvoir définir soit-même le nom d'un tel controle serait de passer par javascript. Il y aurait-il un moyen plus "propre" ? Si oui lequel ?

    D'avance merci.

    PS: j'ai effectué une recherche sur ce forum, mais je n'ai rien trouvé. Si un tel thread existe déjà, je promet de me flageller en publique (mais je ne vous dirais pas où )

  2. #2
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    Salut.
    Je te conseille de regarder la propriete ClientID de ton controle. Je doute un peu de ton code
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextBox.Attributes.Add("ID", "monTextBox");
    Je t'explique pourquoi.
    Tu vas acceder ton textbox(tb) comment ?
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox tb = this.Page.FindControl(monTextBox.Attributes["ID"]) as TextBox;
    Mais si tu le fais comme ca, ca veut dire que monTextBox est different de null(pour acceder aux Attributes) alors tu as le textbox(monTextBox) pourquoi le cherche. tb et monTextBox seront la meme chose !
    Si par contre monTextBox est null alors tu vas avoir une exception (null.Attributes ) et donc tu ne peux pas recuperer la valeur de l'ID pour chercher ton controle.
    Peut-etre quelque chose comme ca sera mieux :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                // On sauvegarde l'ID
                ViewState["tbID"] = tb.ClientID;
    et puis
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox tb = this.Page.FindControl(ViewState["tbID"].ToString()) as TextBox;
    Bon courage

  3. #3
    Membre éprouvé Avatar de raOOn
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    Bonjour,

    Si j'ai bien compris... Et si ma mémoire est bonne

    Une autre méthode c'est de récupérer son unique ID


    this.page.findcontrol(aTextBox.uniqueID)

  4. #4
    Membre confirmé Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178
    Par défaut
    Bonjour
    Si tu veux le recuperer en JavaScript
    il faut que tu fasse


  5. #5
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    Citation Envoyé par raOOn
    Bonjour,

    Si j'ai bien compris... Et si ma mémoire est bonne

    Une autre méthode c'est de récupérer son unique ID


    this.page.findcontrol(aTextBox.uniqueID)
    Je crois que ca va pas marcher. UniqueID vaut zero quand on cree le controle dynamiquement.(99.99% sur)
    Finalement tyraslin tu veux faire quoi exactement ? Parce que vraiment je vois pas. Pourquoi tu as besoin de l'ID d'un controle ?
    La seule utilite que je vois c'est de l'utilise en combinaison avec JavaScript mais comme c'est un controle dynamique ...

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Par défaut
    Citation Envoyé par scifire
    Je crois que ca va pas marcher. UniqueID vaut zero quand on cree le controle dynamiquement.(99.99% sur)
    Finalement tyraslin tu veux faire quoi exactement ? Parce que vraiment je vois pas. Pourquoi tu as besoin de l'ID d'un controle ?
    La seule utilite que je vois c'est de l'utilise en combinaison avec JavaScript mais comme c'est un controle dynamique ...
    Merci à tous pour vos réponses.
    En fait, ce que je voudrais faire, c'est récupérer la propriété Text de mon textbox. A moins qu'il n'existe une solution plus élégante, il me semble que je suis obligé de récupérer l'id de mon textbox pour celà, non ?

    donc, en gros, j'ai un bouton et un textbox ajoutés dynamiquement.
    Je veux donc récupérer mon control afin d'associer par exemple un event à mon bouton qui récupère la valeur text de mon textbox.
    (je ne sais pas si je suis bien clair).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Par défaut
    Citation Envoyé par scifire
    Je crois que ca va pas marcher. UniqueID vaut zero quand on cree le controle dynamiquement.(99.99% sur)
    Je pense que le 0.01% est le bon pourtant :p
    Par contre pourquoi ajouter un attribut ID puisqu'il existe déjà? ID que tu peux set à la création de ton control. Tu peux donc à ce moment connaitre l'ID, pui sl'unique ID (CLientID) une fois que tu as ajouté ton contrôle à la page, et éventuellement le sauvegader dans le viewstate par exemple, ou autre.
    L'ID que tu récupère via le findcontrol est cet UniqueID, qui te permettra de récupérer une éventuelle donnée pour ton controle dans le response (response(UniqueId du controle)) après un postback.

Discussions similaires

  1. [VBA] Récupérer le handle d'un contrôle
    Par Tofalu dans le forum IHM
    Réponses: 6
    Dernier message: 13/06/2013, 10h04
  2. Réponses: 10
    Dernier message: 22/08/2007, 18h07
  3. Récupérer le style d'un contrôle windows
    Par Rog51 dans le forum Windows
    Réponses: 3
    Dernier message: 02/05/2007, 10h57
  4. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  5. Récupérer valeur contrôle en dynamique via requête
    Par nicburger dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2005, 15h41

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