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 :

onRowDblClick de dojox.grid.DataGrid [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier Avatar de Zineb1987_UNI
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 74
    Points
    74
    Par défaut onRowDblClick de dojox.grid.DataGrid
    Salut,
    S'il vous plait j'ai une fonction qui me retourne le contenu d'un champ dans le Grid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getItemGrid() {
        dojo.query("td.dojoxGridCell", "zoneGabarit")
        .forEach(function (itemClique) {
            dojo.connect(itemClique, "ondblclick", function (clic) {
                gabaritSelectionne = clic.target;
                gabaritName = gabaritSelectionne.innerHTML;
            });
        });
        alert(gabaritName);
        return gabaritName;
    }
    et dans l'evenement onRowDblClick je fait l'appel a cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="dojo/method" event="onRowDblClick" args="row">
     
    getItemGrid();
    afficheGabarit(gabaritName);
    </script>
    mon probléme c'est que dans le 1er doubleClick la variable gabaritName is not defined !!?
    et merci.

  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,

    J'ai l'impression que tu mélanges un peu tout...

    Ce que ton code signifie c'est: "en cas de doubleclick sur une ligne alors ajouter un événement doubleclick sur chaque cellule et cet événement renverra le contenu de la cellule et l'élément du DOM qui a généré ce double click; de suite après afficher le gabarit (résultat d'un double click)"

    Donc c'est normal que le premier double click échoue étant donné que tes événements ne sont à ce moment pas connectés.

    Plus généralement ce type de réalisation est très hasardeux: il suffit que la prochaine version de Dojo change un nom de class dans la grid et ton code est à refaire. Tu dois uniquement utiliser le onRowDblClick que tu as justement intégré. A partir de celui-ci tu accèdes à l'item du store concerné et à la cellule cliquée, donc à la valeur correspondante.

    Bon dev,

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

  3. #3
    Membre régulier Avatar de Zineb1987_UNI
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 74
    Points
    74
    Par défaut
    Merci Bien pour la reponse.
    mon problème est réglé

  4. #4
    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
    J'espère que tu es passé par le store...

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

  5. #5
    Membre régulier Avatar de Zineb1987_UNI
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 74
    Points
    74
    Par défaut
    ouui j'ai recuperer le item par le grid.getItem(e.rowIndex); et la valeur du champ par grid.store.getValue(item,"nom");
    Merci bien pour une autre fois

  6. #6
    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 Zineb1987_UNI Voir le message
    ouui j'ai recuperer le item par le grid.getItem(e.rowIndex); et la valeur du champ par grid.store.getValue(item,"nom");
    Merci bien pour une autre fois
    Excellent !

    Dojo peut paraitre un peu "tordu" mais si on s'astreint à utiliser les bons éléments et la démarche associée (souvent utiliser le store...) alors la vie en est grandement simplifiée.


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

  7. #7
    Membre régulier Avatar de Zineb1987_UNI
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 74
    Points
    74
    Par défaut
    Oui Totalement D'accord merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Pouvez-vous développer un peu votre solution.

    Pour l'instant j'ai ça :

    Déclaration de la grid (qui s'appelle grid) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <span dojoType="dojo.data.ItemFileReadStore" jsId="store" url="<?php echo POSITION.'inclus/depenses/deptdb/deptdb_contenu.php'; ?>">
    </span>		
    	<table dojoType="dojox.grid.DataGrid" jsId="grid" id="grid" store="store" selectionMode="single"
    		style="width:100%; margin-left:auto; margin-right:auto;" autoHeight="true" region="center"
    		onrowdblclick="DblClick();">
    	<thead><tr>
    	<th field="item_nom" width="auto"><?php echo deptdbt2; //Description?></th>
    	<th field="item_ean" width="auto">EAN</th>
    	</tr></thead></table>
    Et ma fonction DblClick() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function DblClick(){
    var row = grid.selection.getFirstSelected();
    alert("ID: " + row.id);
     
    var item = grid.getItem(grid.rowIndex);
    alert ("item :" + item);
     
    var valeur = grid.store.getValue(item, "id");
    alert("valeur dans le store: " + valeur);
    Je précise que j'ai un champ 'id' dans mon store JSON, même si je ne l'affiche pas dans ma Grid.

    Quand je double-clique, le premier alert me renvoie bien le contenu du champ id, et je pourrais m'en contenter. Mais vous avez l'air de dire qu'il vaut mieux passer par le Store.

    Alors j'essaye les deux instructions suivantes. Le alert(item) me renvoie 'null'... et du coup, alert(valeur) n'est même pas lancé...

    Bizarre hein ?!

    Laurent

  9. #9
    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,

    Il faut déjà noter que la selection change de type entre la v1.2 et la v1.3. En 1.2 on récupère des items et en 1.3, les indices des items...
    Ensuite, ton code grid.rowIndex ne peut pas fonctionner car rowIndex n'existe pas formellement...

    Essaie plutôt quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    <table dojoType="dojox.grid.DataGrid" jsId="grid" id="grid" store="store" selectionMode="single"  style="width:100%; margin-left:auto; margin-right:auto;" autoHeight="true" region="center">...
    <script type="dojo/connect" event="onRowDblClick" args="e">
       var item = grid.getItem(e.rowIndex);
       alert ("item :" + item);
       var valeur = grid.store.getValue(item, "id");
       alert("valeur dans le store: " + valeur);
    </script>
    ...
    </table>
    sachant que onRowDblClick prend comme paramètre un objet event "décoré" de propriétés (rowIndex, grid...).

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

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Ca marche parfaitement (version 1.3.2) !

    Merci : si un jour je mets ce site en ligne, je pourrai dire que je ne l'ai pas fait tout seul et sans aide !!!

    Question suivante : je m'attaque au Flash/Flex !!! Nan, je déconne : faut que je trouve quelqu'un qui me fasse/vende le composant dont j'ai besoin !

    Merci encore.
    Laurent

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

Discussions similaires

  1. [Dojo] verifier si un Dojox.Grid.Datagrid est vide
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 10/02/2010, 14h44
  2. [Dojo] recuperer un dojox.grid.DataGrid vide
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 28/01/2010, 12h08
  3. [Dojo] Dijit.form.select dans un dojox.Grid.DataGrid
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 13
    Dernier message: 19/11/2009, 11h07
  4. [Dojo] Actualisation grid (dojox.grid.DataGrid)
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 07/09/2009, 10h05
  5. [Dojo] dojox.grid.DataGrid : prise de tete
    Par linotte91 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 19/06/2009, 15h22

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