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 :

Conserver une ligne sélectionnée dans un Grid


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut Conserver une ligne sélectionnée dans un Grid
    Bonjour

    Depuis quelques jours, je m'acharne sur l'utilisation des Grids ExtJS, et grâce à ce forum, j'ai pu afficher quelques belles grilles.
    Je tombe aujourd'hui sur un nouveau souci :

    Après sélection d'une ligne dans un grid, je fais un Submit qui me permet d'afficher d'autres données. Jusqu'ici tout va bien !
    Mais je souhaite que la ligne sélectionnée dans le premier grid reste sélectionnée.
    De base, sans action particulière, cette sélection disparait.

    J'ai trouvé une instruction qui devrait me permettre de redonner le focus à la ligne en question :

    grid.getView().focusRow(Numero_de_ligne);

    En stockant dans une variable de session ce numéro, je devrais pouvoir atteindre cette ligne mais ça ne fonctionne pas.

    D'où mes deux questions :
    1) est-ce la bonne instruction ?
    2) si oui, où faut-il la placer pour obtenir l'effet voulu après le Submit ?

    Voici les extraits de code concernés :

    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
     
    var grid = new Ext.grid.GridPanel ({
            store: store,
     
          sm: new Ext.grid.RowSelectionModel({
          singleSelect: true,
          listeners: {
             rowselect: function(sm,index, record) {
    		toto = record.data.Processus;
    		document.DDT.proc.value=toto;
    		document.DDT.i_proc.value=index; // <-- je sauvegarde le numéro de ligne
     		document.DDT.submit();
    								                 }
                 	}
     
          }),
     
            columns: [
                {id:'Processus',header: 'Processus', width: 60, sortable: true, dataIndex: 'Processus'},
                {header: 'Nom', width: 165, sortable: true,  dataIndex: 'Nom'},
                {header: 'Nb', width: 40, sortable: true,  dataIndex: 'Nb'}],
     
            stripeRows: true,
            height: 155,
            width: 270,
            title: 'Processus',
            stateful: true,
            stateId: 'grid'
        });
     
        	grid.render('grid-example');
    	indice = document.DDT.i_proc.value;
    	if (indice != -1) {
    	    grid.getView().focusRow(indice);  // <-- j'ai placé ici l'instruction mais ...
    		}
     
    					 })
    merci de votre aide
    cordialement

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    Bonjour, j'ai pas tres bien compris ce que tu voulais faire ..

    mais peut etre que tu pourrais remplacer ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	if (indice != -1) {
    	    grid.getView().focusRow(indice);  // <-- j'ai placé ici l'instruction mais ...
    		}
    par ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (indice != -1) {
       grid.getSelectionModel().selectRow(indice);
    }

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut
    Bonjour et merci Takitano

    J'ai essayé ta modif et ... l'appli est partie en boucle !

    Je pense que l'instruction n'est pas en cause. Je vais tenter d'expliquer plus clairement le problème.

    Mon programme php propose dans une page un grid où l'utilisateur peut choisir un processus (mais qu'importe).
    Quand il clique sur une ligne de ce grid, je fais un submit pour lancer sur le serveur une nouvelle requête avec comme paramètre l'id de la ligne choisie (c'est en passant grâce à toi que ceci fonctionne, cf précédent post).

    Le résultat est l'affichage d'un autre grid contenant de nouveaux éléments.
    Tout ça marche très bien.

    Mon souci est de faire en sorte que la ligne sélectionnée dans le premier grid reste sélectionnée après le submit.

    C'est d'une part un problème Javascript, pour l'instruction et d'autre part un problème php, pour la logique d'enchainement des comportements.

    J'ai l'impression que le souci se situe plutôt au niveau php, car j'ai beau récupéré le numéro de la ligne, je n'arrive pas à conserver cette ligne sélectionnée.

    Désolé d'avoir été aussi long.
    En tout cas, merci de t'être penché sur mon cas.

    Cordialement
    madmax

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    ok ...
    j'ai une question :
    1- lorsque le serveur recoit ton numero de ligne, est ce que tu recharge la page ... ? ou est ce un appel ajax ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut
    Je recharge la page.
    C'est pour ça que je perds (pour l'instant) la ligne sélectionnée.

    Cordialement
    madmax

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    Je recharge la page.
    C'est pour ça que je perds (pour l'instant) la ligne sélectionnée.

    Cordialement
    madmax


    Bonjour,

    Je me doutais qu'il y avait quelque chose...

    Alors, il faudrait que tu mets en place au niveau de ton bouton submit un appel ajax, dont voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Basic request
    Ext.Ajax.request({
       url: 'foo.php',
       success: someFn,
       failure: otherFn,
       headers: {
           'my-header': 'foo'
       },
       params: { foo: 'bar' }
    });
    puis tu executes (avec la fonction eval) ce que tu récupères dans la fonction de retour, c'est a dire ... someFn ... il faut bien evidemment mettre du code javascript dans la réponse du serveur ...

    avec ta méthode, tu t embarques dans des problematique tres complexe ... tres difficilement gérable ... en gros pour simplifier les choses ... tu demandes au serveur de faire le boulot du client ...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 12h08
  2. [XL-2003] Modifier une ligne sélectionné dans une listView
    Par monichou86 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/12/2009, 17h49
  3. Réponses: 3
    Dernier message: 04/10/2008, 12h19
  4. Réponses: 6
    Dernier message: 29/09/2008, 09h24
  5. coordonnées d'une cellule sélectionnée dans un grid
    Par mon_proj dans le forum wxPython
    Réponses: 2
    Dernier message: 08/04/2008, 11h26

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