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

JavaScript Discussion :

ClientID d'un élément variable


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut ClientID d'un élément variable
    Bonjour,

    J'ai plusieurs tables construites en c#, construites avec les éléments suivants:
    • Type de mes tables: System.Web.UI.WebControls.Table
    • Type de mes lignes: System.Web.UI.WebControls.TableRow
    • Type de mes cellules: System.Web.UI.WebControls.TableCell


    Chacune de mes cellules se voient affectées un ID "row_"+ R + "_cell_" + C
    où R et C sont des int représentants respectivement le numéro de la ligne et le numéro de la colonne de ma cellule.

    Je colore certaines cellules.
    J'ai un bouton refresh qui est destiné à remettre tout en blanc, en appelant une fonction Javascript.
    Malheureusement, je n'arrive pas à récupérer correctement le ClientID.
    Je vous montre mon script en erreur, mais il vous permettra de comprendre ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function refreshCasefunction() {
            var obj = null;
     
            for (var y = 1; y <= 4; y++) {
                for (var x = 1; x <= 7; x++) {
                    var tmp = "row_" + y + "_col_" + x;
                    obj = document.getElementById("'<%='"+tmp+"'.ClientID%>'");
                    obj.style.backgroundColor = "White";
                }
            }
        }
    ça doit être faisable mais je n'arrive pas à mettre la bonne syntaxe pour récupérer correctement le ClientID.

    Merci de votre aide!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    il semblerait que tu sois en train d'essayer d'appeler une propriété asp avec javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      obj = document.getElementById("'<%='"+tmp+"'.ClientID%>'");
    tu es coté client ... asp n'existe pas

  3. #3
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Salut

    var tmp = "row_" + y + "_col_" + x;
    obj = document.getElementById("'<%='"+tmp+"'.ClientID%>'");
    obj.style.backgroundColor = "White";
    ca n'ira pas car tu mélanges une techno serveur et une techno client, du coup ton objet "tmp" n'existe pas encore au moment où le serveur va contruire la page, et après, une fois la page construite, ClientID n'est pas une propriété valide d'un objet du DOM, donc tu ne pourras pas le récupérer comme ca...

    par contre tu peux peut-etre balayer tous les objets DOM et les remettre en blanc comme prévu

    essaie peut-etre un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for(obj in document.getElementsByTagname("td"))
    {
     
        //le "if" vérifie si le TD est celui que tu veux, donc il est facultatif si tu veux tous les TDs
        if(obj.id!=undefined && obj.id.indexOf('_col_')>0)
        {
            obj.style.backgroundColor='white';
        }
    }
    bye
    Nico

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 343
    Points : 129
    Points
    129
    Par défaut
    Oui je sais bien que côté client, asp n'est pas vu, mais je m'embrouille un peu...

    @Nicopilami
    Ta solution me parait bien, mais je ne rentre jamais dans le if (j'ai mis un alert). L'objet obj.id est toujours undefined...

    Pourtant côté serveur, à chaque cellule, j'attribue un ID:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell.ID = "row_" + R + "_col_" + C;
    Merci de votre aide

  5. #5
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par cyrano_de_bergerac Voir le message
    Oui je sais bien que côté client, asp n'est pas vu, mais je m'embrouille un peu...


    Citation Envoyé par cyrano_de_bergerac Voir le message
    @Nicopilami
    Ta solution me parait bien, mais je ne rentre jamais dans le if (j'ai mis un alert). L'objet obj.id est toujours undefined...

    Pourtant côté serveur, à chaque cellule, j'attribue un ID:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell.ID = "row_" + R + "_col_" + C;
    ca a toujours été un peu vague pour moi les ClientID, car quand tu géneres ton TD, si tu mets Toto.id=... ca te génère en fait une partie du ClientID.

    1*) tu as apparemment une solution de contournement au niveau serveur ici

    2*) si tu gardes la solution "tout JS", essaie sans le if et dis nous si ca fonctionne

    bye
    Nico

Discussions similaires

  1. [XL-2010] Tableau ou plage nommée à partir d'une liste d'élément variable
    Par calagan99 dans le forum Excel
    Réponses: 3
    Dernier message: 03/02/2014, 14h29
  2. Insérer un XML avec éléments variables dans un un HTML sans langage serveur
    Par multimania dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 24/06/2011, 13h27
  3. Réponses: 4
    Dernier message: 26/01/2009, 13h37
  4. Afficher des éléments (variables) d'une colonne dans une combobox
    Par ananis dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/01/2008, 22h27
  5. Tableau d'éléments de type variable
    Par Drooxy dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2003, 15h20

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