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 :

Pouvoir naviguer depuis une fenêtre "détails" ?


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 Pouvoir naviguer depuis une fenêtre "détails" ?
    Bonjour à tous,

    J'ai actuellement un grid dont le onDoubleClick ouvre une fenêtre "détail" (de la ligne sélectionnée).

    Je cherche désesperement comment depuis la fenêtre "détail" passer à la ligne suivante de ma grid (next ou previous row)?

    Dans ma grille la ligne n'est pas sélectionnée, mais juste focusée, donc le code ci-dessous renvoie vide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            var myInfGrid = this.getRefmyinfpatentgrid();
            var selectedRecord = myInfGrid.getSelectionModel().getSelection()[0];
            console.log(selectedRecord);
    Existe-t-il un équivalent de selectPrevious()/selectNext() mais pour un focus ?

    D'avance merci pour vos conseils,

    Amicalement
    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
    Bon je ne sais pas si c'est la solution la plus belle mais j'ai tout simplement sélectionné le brevet sur lequel j'ai double-clické, ensuite j'ai utilisé ce code :

    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
    onClickNextPatent: function(button) {
            var myInfGrid = this.getRefmyinfpatentgrid();
     
            var store           = myInfGrid.getStore();
            var selModel        = myInfGrid.getSelectionModel();
            var selectedRecord  = selModel.getLastSelected();
            var recordIndex     = store.indexOf(selectedRecord);
            var nextRecord      = store.getAt(recordIndex + 1);
            selModel.select(nextRecord);        
     
            this.application.currentRecord = nextRecord;
            var el = Ext.get("mybibliosheet");
            PatentPulse.TplBiblio.overwrite(el, nextRecord.data);
     
    },

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    ce n'est effectivement pas la meilleure façon de faire.

    les bonnes pratiques sont de ne mettre aucun code exécutable dans la vue. Donc pas de onclick dans la vue.
    c'est au contrôleur de géré les événement de toutes ses vues.
    lorsque tu dbclique sur un élément de ta liste le contrôleur ouvre la fenêtre de détail et y place les valeur de l'élément sélectionné.

    lorsque tu clique sur next ou preview dans la fenêtre principale (grid) ou la fenêtre de détail le contrôleur sélectionne l'élément suivant ou précédant dans la fenêtre principale et le place dans la fenêtre de détail.

    le contrôleur a nativement accès au store aux vues et il est le porteur du code exécutable il est donc le mieux placé pour permettre les interactions.

    dans le guide de sencha tu trouveras
    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
    Ext.define('AM.controller.Users', {
        ...
        init: function() {
            this.control({
                'viewport > userlist': {
                    itemdblclick: this.editUser
                },
                'useredit button[action=save]': {
                    click: this.updateUser
                }
            });
        },
        editUser: function(grid, record) {
            var view = Ext.widget('useredit');
     
            view.down('form').loadRecord(record);
        },
        updateUser: function(button) {
            var win    = button.up('window'),
                form   = win.down('form'),
                record = form.getRecord(),
                values = form.getValues();
     
            record.set(values);
            win.close();
        }
        ...
    });
    dans cet exemple lors du dblclic sur un élément on appelle la méthode editUser du contrôleur
    lorsqu'on clique sur le bouton save on appelle la méthode updateUser qui récupère les valeur du formulaire et les mets en base.

    de la même façon tu peux géré un bouton next et preview
    par défaut le contrôleur possède les getteur pour accéder au store. si tu a un store Users tu as un getteur getUsersStore.

    A+JYT

  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 Sekaijin,

    Merci pour ces précisions mais juste un petit détail, je n'ai aucune ligne de code dans ma View, tout ce que tu vois se trouve dans le controlleur.

    j'ai bien dans ma section init le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                'button#btnNextPatent': {
                    click: this.onClickNextPatent
                },
                'button#btnPrevPatent': {
                    click: this.onClickPrevPatent
                }
    Amicalement,
    Bruno

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Ok parfait
    j'ai été induis en erreur par le nom de la méthode.

    A+JYT

  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
    Aucun problème ! J'essaie de suivre tes conseils donnés dans mes posts précédents.

    Amicalement

Discussions similaires

  1. Accéder à un objet depuis une fenêtre modale
    Par Kephuro dans le forum Débuter
    Réponses: 4
    Dernier message: 04/06/2008, 14h01
  2. Lancer une application depuis une fenêtre gtk
    Par cyrilleG dans le forum GTK+ avec Python
    Réponses: 11
    Dernier message: 29/09/2007, 22h03
  3. Comment afficher un MessageBox depuis une fenêtre réduite ?
    Par cyberma dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/07/2005, 18h16

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