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 :

Décocher toutes les checkbox


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Points : 32
    Points
    32
    Par défaut Décocher toutes les checkbox
    Bonjour, actuellement en train de travailler sur une page aspx, je n'arrive pas à réaliser une méthode pour décocher toutes les checkbox de ma page.

    J'ai pour le moment fait ceci mais sans succès : ( lors du débugage, les webcontrol ne sont pas pris en compte dans ma boucle )

    Code pour vérifier si au moins une checkbox est cochée
    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
     
     
    ' renvoie vrai si au moins une checkbox est cochée'
        Private Function VerifAllCheckbox()
            Dim result As Boolean
            result = False
     
            Dim i As Object 
            For Each i In Me.Controls
                If TypeOf i Is CheckBox Then
                    If CType(i, CheckBox).Checked = True Then
                        result = True
                    End If
                End If
            Next
     
            Return result
        End Function
    Code pour décocher les checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        ' décoche toutes les checkbox'
        Private Sub Decocher()
     
            Dim i As Object
            For Each i In Me.Controls
                If TypeOf i Is CheckBox Then
                    CType(i, CheckBox).Checked = False
                End If
            Next
     
        End Sub
    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Deux choses :
    • Tu pourrais faire cela en Javascript pour que ce soit plus User-Friendly (enfin, cela dépend du contexte évidemment). Tu peux trouver des sources simples sur ce forum ou via Google.
    • Concernant ta méthode en code-behind, tu ne fais pas de parcours récursif de tes contôles, normal que ça ne fonctionne pas correctement. (d'ailleurs tu pourrais utiliser Linq To Object pour parcourir des contrôles).
    En espérant t'avoir aidé.

  3. #3
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Voilà des petits exemples pour s'inspirer qui permet de décocher tes checkbox qui sont sur une page

    Cas "checkBox dans la même page" :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page.aspx.cs" Inherits="CheckBox" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:CheckBox ID="CheckBox1" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox2" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox3" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox4" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox5" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox6" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox7" runat="server" />
        </div>
        <asp:Button ID="cmdDecoche" runat="server" Text="Décocher" 
            onclick="cmdDecoche_Click" />
        </form>
    </body>
    </html>
    CodeBehind
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class Page: System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
        protected void cmdDecoche_Click(object sender, EventArgs e)
        {
            foreach (Control masterControl in Page.Controls)
            {
                foreach (Control formControl in masterControl.Controls)
                {
                    if (formControl is System.Web.UI.WebControls.CheckBox)
                    {
                        System.Web.UI.WebControls.CheckBox check = ((System.Web.UI.WebControls.CheckBox)formControl);
                        check.Checked = false;
                    }
                }
     
            }
        }
    }
    Cas "checkBox dans un control" :
    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
    21
    22
    23
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckBoxWithControl.aspx.cs" Inherits="CheckBoxWithControl" %>
     
    <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
     
            <uc1:WebUserControl ID="WebUserControl1" runat="server" />
     
        </div>
        <asp:Button ID="cmdDecoche" runat="server" Text="Décocher" 
            onclick="cmdDecoche_Click" />
        </form>
    </body>
    </html>
    Code Behind :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class CheckBoxWithControl : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
        protected void cmdDecoche_Click(object sender, EventArgs e)
        {
            foreach (Control masterControl in Page.Controls)
            {
                foreach (Control formControl in masterControl.Controls)
                {
                    foreach (Control control in formControl.Controls)
                    {
                        if (control is System.Web.UI.WebControls.CheckBox)
                        {
                            System.Web.UI.WebControls.CheckBox check = ((System.Web.UI.WebControls.CheckBox)control);
                            check.Checked = false;
                        }
                    }
                }
     
            }
        }
    }
    Control :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <asp:CheckBox ID="CheckBox1" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox2" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox3" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox4" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox5" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox6" runat="server" />
            <br />
            <asp:CheckBox ID="CheckBox7" runat="server" />
    Bonne courage

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Bof, le jour où il décidé de rajouter un container autour de ces checkbox, le code behind ne fonctionnera plus.
    Faut faire du récursif comme indiqué plus haut

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Allez, je suis dans un bon jour

    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
    21
     
    public void CheckAll(Control parent)
            {
                var query = (from p in parent.Controls.Cast<Control>()
                             let q = p as CheckBox
                             where q != null
                             select p);
     
                foreach (var item in query)
                {
                    ((CheckBox)item).IsChecked = true;
                }
     
                foreach (Control ctl in parent.Controls)
                {
                    if (ctl.Controls.Count > 0)
                    {
                        CheckAll(ctl);
                    }
                }
            }

  6. #6
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Merci pour cette solution formidable, mais malheureusement j'ai voulais l'essayer mais ca marche pas pour moi. Je me retrouve avec des erreurs et tt

    Est-ce que vous pouvais nous expliquer comment faire, pour réaliser un jeu de teste svp M. lutecefalco?!!!!!!!!!!!!!!!!!!!

    Merci d'avance

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    C'est quoi tes erreurs.
    LINQ ne fonctionne qu'à partir de la version 3.0 du framework

  8. #8
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    ca je le sais très bien, Merci pour l'info
    Déjà sur ton code, le IsChecked n'existe pas (c-a-d qu'il est pas reconnue)
    Donc je l'ai rectifié :

    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 void CheckAll(Control parent)
        {
            var query = (from p in parent.Controls.Cast<Control>()
                         let q = p as CheckBox
                         where q != null
                         select p);
     
            foreach (var item in query)
            {
                ((System.Web.UI.WebControls.CheckBox)item).Checked = true;
            }
     
            foreach (Control ctl in parent.Controls)
            {
                if (ctl.Controls.Count > 0)
                {
                    CheckAll(ctl);
                }
            }
        }
    Mais ca marche tjr pas c-a-d que le jeu de test je n’arrive pas a le faire, si ca te dérange pas de nous écrire un petit exemple complet pour pouvoir tester ton code, afin de dire que votre code est récursif et tt

    Merci.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ouais pour le IsChecked, j'ai fait ça à l'arrache.
    Tu l'appelles bien quelque part la fonction?

  10. #10
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    J'ai appelé la fonction au niveau de l'exemple que j'ai met lors de click sur le bouton

    Peut être que j'ai met le mauvais teste
    Pourrai-vous me rectifier svp.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Je viens de tester chez moi, ça fonctionne

  12. #12
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Est-ce vous pouvez nous partager l'exemple svp?!!!

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Y a rien à ajouter

    Une page avec qqs checkbox + 1 bouton
    La fonction CheckAll et un clic sur le bouton appelle CheckAll(Page)

  14. #14
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Ok, alors pour le même cas que j'ai met, ca marche pas ta solution mon ami

    Désolé.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par hamouda64 Voir le message
    Ok, alors pour le même cas que j'ai met, ca marche pas ta solution mon ami

    Désolé.
    Enlève tes moufles

  16. #16
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    T'inquiète, je l'ai met même pas

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par hamouda64 Voir le message
    T'inquiète, je l'ai met même pas
    Apparemment si

  18. #18
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Apparemment si
    t'inkiéte amigo je ss pas de genre

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Je viens de tester, ca marche très bien.

Discussions similaires

  1. Cocher et décocher toutes les checkbox
    Par waylander35 dans le forum Débuter
    Réponses: 3
    Dernier message: 27/03/2015, 15h01
  2. Décocher toutes les checkbox d'une checkedlistbox
    Par Machine Head dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/11/2009, 17h57
  3. [JSF]Cocher toutes les checkbox d'une colonne
    Par Shivan dans le forum JSF
    Réponses: 6
    Dernier message: 14/07/2009, 19h09
  4. Cocher toutes les checkbox d'un formulaire
    Par stars333 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/06/2007, 18h43
  5. [Formulaire][Javascript] Décocher toutes les checkbox
    Par Salam59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/03/2006, 14h28

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