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

Bibliothèques & Frameworks Discussion :

Grid: cocher une case et décocher les autres [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Grid: cocher une case et décocher les autres
    Bonjour,
    S'il vous plait, j'ai une grid dojo qui contient des cellules de type cellType="dojox.grid.cells.Bool", quand je coche une case à cocher d'une cellule je veux que tous les autres case à cocher qui se trouvent dans les autres lignes seront décochés automatiquement.
    Sachant que je travaille sous dojo 1.4 et quand j'utilise le 1.3 ça marche sans problème.
    Voilà la fonction qui permet de charger le grid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function verifGridFiche()
    {
       dijit.byId('fich').onDownloadEnd = function() {
           dojo.connect(gridStore, "onSet", function (item, attribute, oldValue
                   , newValue) {
                   etatGridFiche(item,attribute,newValue,oldValue);
           });
        }
    }
    et voilà le code qui permet de rendre le checkBox comme un radionBouton
    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
     
    function  etatGridFiche(item,attribute,newValue,oldValue)
    {
       doc = document.getElementById("doc").value;
       var j = 0 ;
       if (champ == 'radiobouton' && attribute == 'couleur') {
                if (newValue != oldValue) {
                   function gotVal(items, request){
                       if (newValue == true ) {
                           for (var i = 0; i < items.length; i++) {
                               //recuperation des valeurs
                                   if (item != items[i]) {
                                       grid.store.setValue(items[i], "clear",
     
    false);
                                   }
                               }
                       } else {
                               for (var i = 0; i < items.length; i++) {
                               //recuperation des valeurs
                               if (grid.store.getValue(items[i], "clear")
    == true)
                                   j = j + 1
                               }
                       }
                       if (j == 0 && newValue == false) {
                           alert ("au moin une option doit etre " +
                                   "selectonné par defaut !");
                           grid.store.setValue(item, "clear", true);
                           }
                   }
               grid.store.fetch({query: {}, onComplete: gotVal});
               }
       }
    }

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    C'est difficile de dire d'après ton code ce qui ne fonctionne plus en 1.4.
    Ce qui est par contre évident c'est que tu es confronté à de la réentrance car tes modifications de store regénèrent elles-même des événement onSet, ce qui complique anormalement ton code.
    Donc 2 choses:
    1. Modifie ton connect initial
    2. Poste un fichier HTML complet qui puisse être testé pour tenter de voir d'où vient le souci


    Bon dev,

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Voilà le code html du grid
    Merci Emmanuel pour ta réponse, et voilà le code HTML:
    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
     
    <span dojoType="dojo.data.ItemFileWriteStore" 
           data='<?php echo htmlentities($this->donneeGrid, ENT_QUOTES) ?> '
           jsid="gridStore">
            </span>
              <table dojoType="dojox.grid.DataGrid" store="gridStore" jsid="grid"
             id="idgrid" style="width: 60em; height: 20em;" rowSelector="20px"
             clientSort="true">
                <thead>
                  <tr>
                    <th field="valeur" width="150px" editable="true">Valeurs</th>
                    <th field="couleur" width="150px" cellType="dojox.grid.cells.Bool"
                    editable="true">Couleur
                    </th>
                  </tr>
                </thead>
              </table>

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Checbox marche bien sur le grid
    Merci beaucoup Emmanuel de m'avoir répondu et pour le temps que tu m'as sacrifié,
    Enfin, j'ai trouvé la solution juste en remplçant cellType="dojox.grid.cells.Bool par :
    cellType="dojox.grid.cells.checkbox.

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re hasnaa1988,

    C'est étonnant car le code de dojox.grid.cells.Bool n'a pas changé entre les versions 1.3 et 1.4. C'est certainement du à la façon dont la grid gère maintenant ses contrôles en mode éditions. D'un autre côté vois tu la checkbox quand tu n'es pas en édition ?

    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Non, je vois pas des chekbox en edition, je vois juste true ou false

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Salut Emmanuel.remy
    Si tu peux me proposer une autre solution qui sera plus performante que celle ci et qui va m'afficher les checkbox en mode non editable, je te serais très reconnaissante et merci d'avance de m'avoir mis sur la piste.

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par hasnaa1988 Voir le message
    Non, je vois pas des chekbox en edition, je vois juste true ou false
    C'est normal. Il faudrait utiliser cells.Bool ... J'essaierai de me pencher un peu sur ton code quand j'aurai un moment.

    Pour le reste, rdv en 2010 !

    ERE
    Quand une tête pense seule, elle devient folle.

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Re Emmanuel.remy,
    D'accord et merci beaucoup alors à l'année prochaine et bonne année avec les meilleurs voeaux.

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

Discussions similaires

  1. Cocher une case en décoche une autre
    Par nini_python dans le forum Tkinter
    Réponses: 3
    Dernier message: 07/07/2012, 15h03
  2. Cocher une case à cocher lorsque la feuille est protégée
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2006, 10h04
  3. Réponses: 4
    Dernier message: 18/01/2006, 14h49
  4. cocher une case+affichage de dates
    Par Toff !!!!! dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 10h07
  5. Cocher une case avec affichage automatique
    Par Toff !!!!! dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 13h36

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