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 :

ExtJS4 - Grid, ActionColumn - Read/Unread


Sujet :

Ext JS / Sencha

  1. #1
    Membre habitué
    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
    Points : 199
    Points
    199
    Par défaut ExtJS4 - Grid, ActionColumn - Read/Unread
    Salut à tous,

    J'ai une Grid dans ma vue qui contient une colonne Read/UnRead.
    Je voudrais faire comme dans un lecteur de mail qui affiche une icone verte quand le mail est non lu et grise quand il est lu.
    J'y arrive presque mais hélas l'icone de la premiere ligne de mon tableau est toujours vide et cela se decale d'une ligne (pour uniquement la colonne Action)

    voici ce que j'ai fait:
    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
    {
                        xtype   : 'actioncolumn',
                        width   : 50,
                        align   : 'center',
                        items   : [{
                                    //icon: 'resources/icons/unread.png',
                                    getClass    : function (value, meta, record, rowIndex, colIndex, store) {
    console.log(this.items);
     
                                        if (record.get('isread')) {
                                            this.items[0].tooltip   = 'Click to Mask as a Unread Notification' + rowIndex;
                                            this.items[0].icon      = 'resources/icons/read.png';
                                        } else {
                                            this.items[0].tooltip   = 'Click to Mask as an Read Notification'+ rowIndex;
                                            this.items[0].icon      = 'resources/icons/unread.png';
                                        }
                                        return value;
                                    }
                        }]
                    }
    si j'ai 3 enregistrements :
    read
    unread
    read

    j'ai donc en visu dans ma grille et sur la colonne Action
    vide (pas d'icone)
    read
    unread

    un console.log de this.items me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     [Object { hasActionConfiguration=true, handler=function(), getClass=function(), plus...}]
    WinNoti...7221009 (ligne 49)
    [Object { hasActionConfiguration=true, tooltip="Click to Mask as an Read Notification0", icon="resources/icons/unread.png", plus...}]
    WinNoti...7221009 (ligne 49)
    [Object { hasActionConfiguration=true, tooltip="Click to Mask as a Unread Notification1", icon="resources/icons/read.png", plus...}]
    On voit bien que j'ai mes 3 passages mais que le premier est vide?!
    Et j'ai ajouté volontairement le + rowIndex dans le tooltip pour voir ce que j'avais comme valeur, il y a aussi un décallage de 1 là.

    Une idée ?

    je ne veux pas utiliser une simple colonne car il y a plusieurs avantages à une ActionColumn comme par exemple le fait de ne pas avoir la sélection de la ligne,
    d'avoir le curseur qui change etc...

    Des idées ?

    je ne trouve pas de solutions à mon problème sur Google.

  2. #2
    Membre habitué
    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
    Points : 199
    Points
    199
    Par défaut
    Alors pour info, dans une colonne "non action" si l'on veut changer le pointer dans le renderer il faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    metadata.style = 'cursor: pointer;';
    il me reste plus qu'à trouver comment ne pas sélectionner la ligne, ou alors résoudre le problème de l'ActionColumn qui commence à la ligne 2.

    Je précise une chose c'est que les autres colonnes de ma grille sont parfaitement bien remplies, et il n'y a pas de décalage.

  3. #3
    Membre habitué
    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
    Points : 199
    Points
    199
    Par défaut
    Yesss

    En fait il ne faut pas utiliser le getClass mais un renderer !
    De plus le getClass est dans items[...] alors que le renderer est sur la colonne

    Voici la solution !

    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
                    {
                        xtype   : 'actioncolumn',
                        dataIndex: 'isread',
                        width   : 50,
                        align   : 'center',
                        items   : [{
                                    handler     : function(view, rowIndex, colIndex, item, e) {
                                                    this.up('grid').fireEvent('itemactionclick', this, 'read', view, rowIndex, colIndex, item, e);
                                    }
                        }],
                        renderer: function (value, meta, record, rowIndex, colIndex, store) {
                                        // This method can also be used to set the tooltip dynamically
                                        if (value) {
                                            this.items[0].tooltip   = 'Click to Mask as a Unread Notification - RowIndex: ' + rowIndex;
                                            this.items[0].icon      = 'resources/icons/read.png';
                                        } else {
                                            this.items[0].tooltip   = 'Click to Mask as an Read Notification - RowIndex: ' + rowIndex;
                                            this.items[0].icon      = 'resources/icons/unread.png';
                                        }
                                        return value;
                                    }
                    },

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il te faut passer par un renderer

    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
    xtype   : 'actioncolumn',
    width   : 50,
    align   : 'center',
    renderer: function (value, metadata, record, rowIndex, colIndex, store) {
      if (value) {
        this.items[0].tooltip   = 'Click to Mask as a Unread Notification - RowIndex: ' + rowIndex;
        this.items[0].icon      = 'resources/icons/read.png';
      } else {
        this.items[0].tooltip   = 'Click to Mask as an Read Notification - RowIndex: ' + rowIndex;
        this.items[0].icon      = 'resources/icons/unread.png';
      }
      metadata.style = 'cursor: pointer;';
      return value;
    },
    items   : [{}]
    A+JYT

  5. #5
    Membre habitué
    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
    Points : 199
    Points
    199
    Par défaut
    Salut Sekaijin

    effectivement j'ai trouvé la solution quelques secondes avant votre post !

    En tout cas merci pour votre ré-activité, c'est très appréciable car ExtJS il n'y a pas beaucoup d'endroit où trouver de l'aide "humaine"

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2015, 18h06
  2. Réponses: 9
    Dernier message: 24/02/2015, 15h50
  3. [ExtJS4.2.1] Grid, ActionColumn, icon en 24*24 ?
    Par Bruno13 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 23/01/2015, 15h47
  4. extJS4, Grid, rowexpander et fichier JSON ?
    Par Bruno13 dans le forum Ext JS / Sencha
    Réponses: 4
    Dernier message: 11/04/2014, 22h51
  5. Supervision Grid Control - tablespace READ ONLY
    Par breizh76 dans le forum Administration
    Réponses: 1
    Dernier message: 07/03/2012, 12h04

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