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] Renommage des ID des controls


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut [2.0] Renommage des ID des controls
    Certains en ont peut-être déjà fait l'expérience mais VS.Net a la bonne idée de renommer les id des controls pour leur ajouter un prefix correspondant à leur position dans la page.
    ex:
    txtSubCategory
    devient
    ctl00_phMain_uwTab__ctl2_txtSubCategory

    Le problème est qu'utilisant DOM, j'ai besoin d'accéder à des élements via leur ID et qu'il me faut alors connaitre le préfix utilisé. Jusqu'à maintenant, j'ai regardé la source pour noter le prefix dans une variable et et l'appeler à chaque fois que je fais getElementById(mavar+'id_du_control');

    Le problème est que si j'ai le malheur de déplacer mon contrôle dans la page, dans un onglet ou contengholder, et bien le profix change de nouveau...
    Bref, c'est pas très propre car on ne se rend compte de l'erreur qu'en production quand le javascript pete une erreur et vu les fonctionnalités, j'ai pas envie de les tester une par une à chaque fois pour fois si le deplacement n'a rien cassé.

    Quelqu'un aurait-il trouvé une solution propre car tout ce que j'ai vu sur le net ne me semble pas super pratique et reste aussi dégueu pour moi.
    Ne peut-on pas désactiver le renommage?

    merci d'avance

  2. #2
    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
    En code behind, t'as accès à l'id client que le framework va générer via ton_control.ClientID.
    Tu peux stocker la valeur dans un input hidden et la récupérer en js

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    et en javascript?


    sinon si j'ai bien compris,
    si je fais txtSubCategory.CliendID, ca me retournerait ctl00_phMain_uwTab__ctl2_txtSubCategory en code behind cest ca?

  4. #4
    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 Louis-Guillaume Morand Voir le message
    sinon si j'ai bien compris,
    si je fais txtSubCategory.CliendID, ca me retournerait ctl00_phMain_uwTab__ctl2_txtSubCategory en code behind cest ca?
    Oui.
    Ensuite, imaginons que tu veuilles récupérer la valeur de ce control en javascript.
    Tu déclares une variable input type hidden et tu la mets en runat = server pour y accéder en code behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='hidden' id='mon_control' runat='server' />
    Dans le PageLoad par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_control.value = txtSubCategory.ClientID
    Ensuite, en javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var obj1 = document.getElementById('mon_control');
    var ma_textbox = document.getElementById(obj1.value);
    Après tu fais ce que tu veux

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    C'est tordu mais ca peut marcher (enfin quand j'ai qu'un seul champ, sur une formulaire, c'est un peu relou :/

    en tout cas, merci, je vais aller creuser tout ca

  6. #6
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Il y a aussi moyen de faire interpréter directement l'id dans le JavaScript, ce qui est un peu plus simple..

    Ca donne un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var obj1 = document.getElementById('<%=Controle.ClientID %>');

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

Discussions similaires

  1. Ensemble des réels, des complexes, des entiers naturels
    Par ANOVA dans le forum Mathématiques - Sciences
    Réponses: 5
    Dernier message: 08/10/2009, 12h58
  2. Réponses: 2
    Dernier message: 28/06/2007, 18h00
  3. Réponses: 19
    Dernier message: 20/12/2006, 10h15
  4. [MySQL] Utilisation des fonctions des récupérations des données
    Par Konrad Florczak dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2006, 15h17
  5. Gestion des majuscules des miniscules des accent
    Par issam16 dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 14h21

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