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 :

Tout cocher/Tout décocher des Checkbox dans une gridView


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut Tout cocher/Tout décocher des Checkbox dans une gridView
    Bonjour,

    Je suis en train de finaliser un affichage de données dans une GridView, et j'ai 2 colonnes indépendantes qui contiennent chacune des checkbox.
    J'aimerai ajouter 2 checkbox (respectivement pour les 2 colonnes) afin de faire un "Tout cocher" ou Tout décocher".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <asp:TemplateField HeaderText="Valider" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:CheckBox ID="cbxValider" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Rejeter" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:CheckBox ID="cbxRejeter" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    J'aimerai savoir s'il y a une astuce pour le faire!

    J'avais comme idée de faire un script javascript, mais dans le code source les noms sont sous la forme
    <input id="gvResultat_ctl05_cbxRejeter" type="checkbox" name="gvResultat$ctl05$cbxRejeter" />

    merki

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    J'ai pas bien compris ce que tu veux faire, "cocher tout" signifie cocher l'une des colonnes pour toutes les lignes ou cocher les deux colonnes pour la meme ligne ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    je rajoute une Checkbox qui permet de cocher toute la colonne
    (et donc comme j'ai 2 colonnes, j'en aurait 2, une pour chaque colonne

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    je te donne ce lien, je ne sais pas s'il va t'aider.

    http://www.asp.net/learn/data-access...ial-52-cs.aspx

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    dans Step 4: Adding “Check All” and “Uncheck All” Buttons, il y a la bonne méthode pour ça merki
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void ToggleCheckState(bool checkState)
    {
     // Iterate through the Products.Rows property 
    foreach (GridViewRow row in Products.Rows) { 
    // Access the CheckBox CheckBox cb = (CheckBox)row.FindControl("ProductSelector");
     if (cb != null) cb.Checked = checkState; 
    } 
    }
    mais j'aurai aimé faire l'action à partir dune checkbox et pas a partir d'un bouton, donc j'ai créé mon chackbox avec un événement sur OnCheckedChange, mais il n'y a pas d'intéraction client/serveur, et l'événement est atteint que lors du prochain rafraichissement

    une solution pour ce nouveau problème?

    ou une autre solution pour la discussion?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Il manque un true à la propriété AutoPostBack du CheckBox que tu utilises pour faire le Check All.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    oui merki

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Finalement j'ai opter pour une nouvelle version en javascript

    .ASPX

    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
    33
    34
    35
     
    <asp:TemplateField HeaderText="Valider" ItemStyle-HorizontalAlign="Center">
                                <HeaderTemplate>
                                    <asp:Label ID="lblValider" runat="server" Text="Label">Valider</asp:Label>
                                    <br />
                                    <asp:CheckBox ID="cbxInverser1" runat="server" />
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <asp:CheckBox ID="cbxValider" runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Rejeter" ItemStyle-HorizontalAlign="Center">
                                <HeaderTemplate>
                                    <asp:Label ID="lblRejeter" runat="server" Text="Label">Rejeter</asp:Label>
                                    <br />
                                    <asp:CheckBox ID="cbxInverser2" runat="server" />
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <asp:CheckBox ID="cbxRejeter" runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>
     
    <script type="text/javascript">
            function ToggleCheckBoxes(ids)
            {
                for (var i = 0 ; i < ids.length ; ++i)
                {
                    var cbx = document.getElementById(ids[i]);
                    if (cbx)
                    {
                        cbx.checked = !cbx.checked;
                    }
                }
            }
        </script>
    .CS

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public List<string> idsValider, idsRejeter;
     
    protected void Page_Load(object sender, EventArgs e)
    {
            //initialisation des Listes
            this.idsValider = new List<string>();
            this.idsRejeter = new List<string>();
    }
     
    protected void gvResultat_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowType != DataControlRowType.DataRow)
    {
        return;
    }
        Control ctrl = e.Row.FindControl("cbxValider");
            if (null != ctrl)
            {
                this.idsValider.Add("'" + ctrl.ClientID + "'");
            }
     
            ctrl = e.Row.FindControl("cbxRejeter");
            if (null != ctrl)
            {
                this.idsRejeter.Add("'" + ctrl.ClientID + "'");
            }
        }
     
    protected void gvResultat_PreRender(object sender, EventArgs e)
        {
            CheckBox cbx = this.gvResultat.HeaderRow.FindControl("cbxInverser1") as CheckBox;
            if (null != cbx)
            {
                cbx.Attributes["onclick"] = "ToggleCheckBoxes([" + string.Join(",", this.idsValider.ToArray()) + "]);";
            }
     
            cbx = this.gvResultat.HeaderRow.FindControl("cbxInverser2") as CheckBox;
            if (null != cbx)
            {
                cbx.Attributes["onclick"] = "ToggleCheckBoxes([" + string.Join(",", this.idsRejeter.ToArray()) + "]);";
            }
        }

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

Discussions similaires

  1. [WD15] Décocher des interrupteurs dans une table
    Par Menadel dans le forum WinDev
    Réponses: 7
    Dernier message: 28/04/2013, 17h32
  2. Cocher ou décocher des checkbox sous condition
    Par babyben2 dans le forum jQuery
    Réponses: 6
    Dernier message: 20/06/2011, 12h23
  3. Réponses: 1
    Dernier message: 26/05/2010, 15h34
  4. [JTable] mettre deS checkbox dans une cellule
    Par Lady dans le forum Composants
    Réponses: 11
    Dernier message: 05/09/2007, 12h21
  5. Des checkbox dans une listbox
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/08/2007, 16h53

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