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 :

Gridview checkbox onclick


Sujet :

ASP.NET

  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut Gridview checkbox onclick
    Bonjour,

    J'ai un Gridview avec 4 colonnes, dont la première contient un checkbox.

    Je voulais que lorsqu'on clique sur la ligne entière, que le checkbox change d'état.

    Donc, voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void grdv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       if (e.Row.RowType == DataControlRowType.DataRow)
       {
            CheckBox ckb = (CheckBox)e.Row.FindControl("ckb");
            e.Row.Attributes.Add("onclick", string.Format("var ckb = $get('{0}'); ckb.checked = !ckb.checked;", ckb.ClientID));
        }
    }
    Voilà que cela fonctionne très bien. Toutefois, lorsque je clique directement sur le checkbox, il ne fonctionne plus.

    Est-ce à cause de la propagation de l'événement au row et ensuite au checkbox ? Là, je dois avouer que je ne comprend vraiment pas pourquoi cela ne fonctionne pas. J'espère que vous pourrai m'aider sur cella là

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Par défaut
    Bonjour,

    il faut passer la colonne avec checkbox en read only, cela devrait te permettre de vérifier si le problème viens d'un double traitement sur la cellule. Il y a de grande chance que ce soit ça.

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Bonjour,

    J'ai essayé la première alternative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ckb.Attributes.Add("readonly", "readonly");
    Mais cela incorpore le checkbox dans un span de façon automatique dans le résultat html.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <span readonly="readonly">
        <input type="checkbox" ...>
    </span>
    Donc, j'ai trouvé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ckb.InputAttributes.Add("readonly", "readonly");
    Maintenant, le tag readonly est bien appliqué au checkbox, mais cela ne règle pas plus mon problème initial.

    J'ai aussi essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    e.Row.Attributes.Add("onclick", string.Format("$get('{0}').click();", ckb.ClientID));
    Cela ne fonctionne pas plus.

    Ce serait assez incroyable que je soit le premier à avoir ce problème ?

    Avez-vous d'autres idées ?

  4. #4
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    J'ai essayé autre chose et voilà ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    e.Row.Attributes.Add("onclick", string.Format("if (event.target.type !== 'checkbox') {{ $get('{0}').click(); }}", ckb.ClientID));
    Je ne suis pas un professionnel du javascript et de la librairie Microsoft Ajax client, mais est-ce que le fait d'utilisé "event.target" sera bien supporté sur la plupart des browsers ?

    N'y a-t-il pas un moyen de récupérer l'élément cliqué avec la souris avec la librarie Ajax client ? J'ai regardé du côté de Sys.UI et Sys.Dom, mais je n'ai rien vu.

Discussions similaires

  1. GridView + CheckBox
    Par museman dans le forum ASP.NET
    Réponses: 5
    Dernier message: 06/04/2010, 09h37
  2. Gridview, checkbox et button
    Par achrafiac dans le forum ASP.NET
    Réponses: 13
    Dernier message: 12/03/2010, 17h32
  3. GridView : checkbox ne se cochent pas !
    Par maynoush dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/02/2009, 12h10
  4. CheckBox - Onclick/UnOnclick
    Par Lokotamani dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/06/2008, 17h23
  5. gridview+checkbox+sélectionner 1 checkbox
    Par tortuegenie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/03/2008, 08h51

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