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 :

Javascript et Checkboxes dans un DataGrid


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut Javascript et Checkboxes dans un DataGrid
    Bonjour à tous,

    J'ai un petit souci sur une fonction JavaScript qui doit me permettre de cocher plusieurs checkbox lorsque je coche la checkbox "mère".

    Je mets le Datagrid concerné en pièce jointe. J'ai donc bien une colonne de checkbox avec une checkbox dans le header. Ce que je veux c'est que lorsque je coche la checkbox dans le header toutes les autres checkbox se cochent et inversement.

    Après plusieurs recherches j'ai fait le code suivant :

    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
    function CheckAllDataGridCheckBoxes()
            {
     
     
    //list des input dans un conteneur précis
    var listInput = document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    var n = listInput.length;
    var i, j;
     
    j=0;
     
    var cbx = document.getElementById('CheckAll');
             if (cbx.checked)
                    {
     
     
    		for (i=0; i<n; i++)
    			{
    			//on ne garde que les checkbox
    		             if (listInput[i].type.toLowerCase()=="checkbox")
    				{
    			            listInput[i].checked = 'true';
    				    j++;
    				}
    			}
                     }
     
            }
    Au niveau de mon code HTML j'ai la chose suivante:

    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
     
    <asp:datagrid id="dgdListeFicheMensuelle" runat="server" Width="825px" AutoGenerateColumns="False" AllowSorting="True">
     
    .........(tout le début de mon datagrid)...........
     
    Dernière colonne:
     
    <asp:TemplateColumn SortExpression="Generation" HeaderText="&nbsp&nbspEffectuer Génération&nbsp&nbsp">
    <ItemStyle Wrap="False" HorizontalAlign="Center"></ItemStyle>
    <headertemplate>
    											<asp:checkbox id="CheckAll"  runat="server" text="Tout Sélectionner" onclick=CheckAllDataGridCheckBoxes()></asp:checkbox>
    										</headertemplate>
     
    <ItemTemplate>										
    											<asp:checkbox id="Check" runat="server" Align = "center">
    											</asp:checkbox>
    </ItemTemplate>
    </asp:TemplateColumn>
     
     
     
    </Columns>
    </asp:datagrid></DIV>
    Je ne vois ce que j'ai de faux. De plus je ne sais pas trop comment debugger du Javascript. Merci de votre aide.
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listInput[i].checked = 'true';
    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listInput[i].checked = true;
    checked est un booléen, pas une chaine...

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Ok j'ai modifié.

    Ca ne marche toujours pas.

    J'ai une erreur Javascript lorsque je coche la checkbox "mère" qui me dit :

    "Ligne 40(correspond à ma première ligne de ma fonction) Objet Requis"

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick=CheckAllDataGridCheckBoxes()
    Non, raté...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="CheckAllDataGridCheckBoxes()"

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut Suite du problème
    Ok c'est bon cela fonctionne nikel maintnant. En fait j'ai regardé mon code source et l'id "checkall" était changé en "dgdListeFicheMensuelle__ctl1_CheckAll".

    Voici ma fonction :


  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    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
    function CheckAllDataGridCheckBoxes()
            {                   
    				//list des input dans un conteneur précis
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
    				var i;
     
     
                    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = true)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = true;
     
    								}
    						}
     
                    }
     
     
     
     
            }

  7. #7
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Par contre comment faire pour optimiser ma fonction :
    1) Lorsque je décoche la case "mère" tout se décoche
    2)lorsque je décoche une des checkbox la case "mère" se décoche

    Pour le 1) j'ai tenté de rajouter un if :

    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
    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = false)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = false;
     
    								}
    						}
     
                    }
    Ceci ne fonctionne pas très bien.

    En effet, lorsque je coche la case "mère" toutes les checkbox se cochent mais la case "mère" reste décochée. Je peux cliquer dessus 15 fois cela ne changera rien.

    ???

  8. #8
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Problème Résolu.

    Voici mon code :


    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    function CheckAllDataGridCheckBoxes()
            {                   
    				//list des input dans un conteneur précis
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
    				var i;
     
     
                    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked == true)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = true;
     
    								}
    						}
     
                    }
     
                    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked == false)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = false;
     
    								}
    						}
     
                    }               
     
            }
     
            function DecocherCheckAll()
            {
    			//list des input dans un conteneur précis
     
    				var i;
    				var debut_id = "dgdListeFicheMensuelle__ctl";
    				var fin_id = "_Check";
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
     
    				for (i=1; i<n; i++)
    						{
    							//on ne garde que les checkbox
     
    									if (listInput[i].type.toLowerCase()=="checkbox")
    									{
    									if (listInput[i].checked == false)
    									document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = false;
    									}
     
     
    						}
     
     
            }

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

Discussions similaires

  1. Pb de layout:checkbox dans un datagrid
    Par dahmen dans le forum Struts 1
    Réponses: 4
    Dernier message: 02/04/2007, 14h17
  2. Réponses: 5
    Dernier message: 30/03/2007, 20h54
  3. Réponses: 2
    Dernier message: 19/05/2006, 18h01
  4. [C#] checkbox dans un datagrid
    Par aymron dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/02/2006, 17h32
  5. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44

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