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

Ext JS / Sencha Discussion :

[EXTJS 4.2.5] Grid, CheckboxModel, désactiver un checkbox ?


Sujet :

Ext JS / Sencha

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut [EXTJS 4.2.5] Grid, CheckboxModel, désactiver un checkbox ?
    Bonjour à tous,

    Voilà le problème que je n'arrive pas résoudre hélas.

    J'ai une grid groupée avec 1 colonne.
    Le champ qui permet le regroupement est nommé "REPLACE", et la colonne visible est nommée "SEARCH"
    j'ai donc des enregistrements de ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SEARCH                   REPLACE
    societe A sarl            SOC A
    societe A sa              SOC A
    societe B eurl            SOC B
    etc...
    Ce qui donne dans ma grille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SOC A
      societe A sarl
      societe A sa
     
    SOC B
      societe B eurl

    En fait ce sont des propositions que je calcule grâce à un petit algo,
    mais cet algo n'est pas parfait surtout pour les noms courts.
    Parfois un nom dans SEARCH se retrouve plusieurs fois dans d'autres SEARCH
    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SMITH
      smiths
      smoths
     
    SMOTH
      smiths
      smoths
    Bref, j'ai donc dans ma GRID un colonne en plus CheckboxModel,

    Comment faire pour que quand l'utilisateur check par exemple "smiths" de SMITH, le "smiths" de SMOTH se disabled ?

    En gros comment rendre disabled un checkbox dans une ligne ?

    je n'ai pas trouvé, je sais que je dois utiliser "onselectionchange" de la grille (que j'utilise déjà pour un bouton "Ok")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    onSelectionChangeFuzzy: function(model, records) {
            var myFuzzyGrid = this.getRefgridfuzzy();
            var btnAssign   = this.getRefbcrossassign();
     
            btnAssign.setDisabled(Ext.isEmpty(records));
     
            myFuzzyGrid.getStore().each(function(record){
     
              // ici disabled la ligne qui répond à mon test
     
            });        
     
     
        },
    mais comment faire pour rendre disabled une ligne ? enfin je veux dire son checkbox ?

    D'avance merci pour votre aide,
    Bruno

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    J'ai un tout petit peu avancé dans mon problème mais cela ajoute un problème supplémentaire

    je fais des essais, j'ai fait la chose suivante, j'ai défini un class .hidden { display: 'none'; } dans mon css, et j'ajoute cette class aux enregistrements que
    l'utilisateur a chochés

    je sais que ce code ne rime à rien mais je tente des choses pour supprimer/cacher les doublons (donc soit je disable le checkbox, soit je cache la ligne)
    ici je cache la ligne que l'utilisateur vient de cocher (je sais ça ne rime à rien) mais cela s'approche de ce que je veux faire,
    il suffira que j'ajoute et je choisisse bien ma condition IF dans ma boucle, bref...

    le problème ici c'est que ma grid perd le GROUPING si je coche le premier élément d'un GROUP ??!!!
    Les enregistrements du groupe courant passe dans le groupe du dessus.

    Si quelqu'un sait pourquoi, je suis preneur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        onSelectionChangeFuzzy: function(model, selectedRecords) {
            var myFuzzyGrid = this.getRefgridfuzzy();
     
            Ext.each(selectedRecords, function(record){
                var rowIndex = myFuzzyGrid.store.indexOf(record);
                myFuzzyGrid.view.addRowCls(rowIndex, 'hidden');
            });        
     
        },

  3. #3
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Par défaut
    Bonjour,

    Pour rendre une checkcolumn disabled, il faut le faire en css.
    Les checkbox dans les grids sont des images.
    Je te donnerai un exemple demain pour désactiver une checkcolumn.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Bonjour Abraxis,

    j'ai de mon côté encore avancé, j'ai maintenant bloqué le click sur un checkbox en faisant ceci:

    Ce que je fais c'est valider ou pas le click avant son changement d'état. Mais j'avoue que l'utilisateur ce n'est pas top car
    le checkbox a toujours le même aspect.

    Je suis preneur pour ton petit bout de code CSS, et aussi l'endroit où on doit faire le addRowCls ou un truc de ce genre je suppose

    En tout cas merci !

    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
        onBeforeSelectFuzzy: function(selModel, record, index) {
            var sRecSelected    = selModel.getSelection();
            var curTrouve       = record.get('form');
            var canbeselected   = true;
     
            Ext.each(sRecSelected, function(rec){
                if (rec.get('form')===curTrouve) {
                    canbeselected   = false;
                }
            });
     
            if (!canbeselected) {
                return false;
            }
        },

  5. #5
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Par défaut
    Voici le renderer de la coloumn avec la checkbox
    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
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
        var cssPrefix = Ext.baseCSSPrefix,
             cls = [cssPrefix + 'grid-checkcolumn'];
        if(record) {
            if (TA_CONDITION) {
                metaData.tdCls += ' ' + this.disabledCls;
            }
                                        
            if(value) {
                cls.push(cssPrefix + 'grid-checkcolumn-checked');
            }
    
            return '<img class="' + cls.join(' ') + '" src="' + Ext.BLANK_IMAGE_URL + '"/>';
        } else {
            return value;
        }
    },

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Super merci,

    maintenant je vais voir comment je peux appliquer ce CSS en dynamique dans mon appli,
    Je ne peux pas le mettre dans le onRender puisque l’événement n'est appelé qu'une seule fois et non à chaque fois
    que je coche/décoche une ligne.

    Merci bcp pour ton code !

    Amicalement,
    Bruno

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

Discussions similaires

  1. [EXTJS 4.0.7] Grid, cellediting et AJAX
    Par magicbisous-nours dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 22/10/2012, 17h01
  2. Désactiver un checkbox d'une checkedlistbox
    Par phfle1 dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/06/2008, 16h48
  3. Désactiver plusieurs checkbox lorsqu'on coche un checkbox
    Par pennylanesworld dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/12/2007, 22h21
  4. Désactiver une checkbox
    Par guidav dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2007, 10h01
  5. Jvcl(grid avec une colonne checkbox)
    Par Klemsy78 dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 21h15

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