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 :

naviguer dans une grille depuis un formulaire


Sujet :

Ext JS / Sencha

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut naviguer dans une grille depuis un formulaire
    Bonjour,
    Je développe une application avec beaucoup d'écrans, de grilles et de formulaires. Le principe simplifié étant toujours le même :
    - l'utilisateur arrive sur une grille de données
    - il double click sur une ligne
    - un formulaire s'affiche avec les données de la ligne
    - chaque formulaire dispose d'une barre de navigation pour parcourir les enregistrements de la grille sans quitter le formulaire.
    La barre de navigation est définie comme suit puis intégrée dans le formulaire:

    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
    tool_navigation =
    {
      layout: 'table',
      region: 'north',
      bodyStyle: 'margin: 5px',
      autoDestroy: true,
      id: 'tbl_toolNav',
      name: 'tbl_toolNav',
      border: false,
      cls: 'btnNav',
      layoutConfig: { columns: 4 },
      items:  
      [
        {xtype: "button", text: "", iconCls: "ico_first", tooltip: lbl_first, id: 'btn_first', name: 'btn_first', handler: function(){showRecord("first")}},
        {xtype: "button", text: "",  iconCls: "ico_prev", tooltip: lbl_prev, id: 'btn_prev', name: 'btn_prev', handler: function(){showRecord("prev")}}, 
        {xtype: "button", text: "",  iconCls: "ico_next", tooltip: lbl_next, id: 'btn_next', name: 'btn_next', handler: function(){showRecord("next")}},
        {xtype: "button", text: "",  iconCls: "ico_last", tooltip: lbl_last, id: 'btn_last', name: 'btn_last', handler: function(){showRecord("last")}}
      ]
    };
    Problème rencontré (avec IE uniquement. Fonctionnement correct avec FF) :
    lorsque je clique sur suivant ou précédent il arrive que le formulaire se retrouve d'un seul coup dans la barre des tâches (perte du focus).
    Ceci se produit de façon aléatoire quelque soit le formulaire. Je peux cliquer 1 fois sur suivant ou précédent et cela se produit et parfois 3, 4 ,5 ou n fois.
    Il n'y a pas de règle.
    En revanche, je peux cliquer tant que je veux sur dernier ou précédent : jamais de problème !
    Après un click sur la navigation le code suivant est exécuté :

    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
    38
    function showRecord(sensNav)
    {
       var grilleParent = window.opener.grid;      
      if (grilleParent.selModel.getCount() == 1) {    
     
        switch (sensNav) {
          case "first":
            grilleParent.selModel.selectFirstRow();
          break;
     
          case "prev":
            grilleParent.selModel.selectPrevious();
          break;
     
          case "next":
            grilleParent.selModel.selectNext();
          break;
     
          case "last":
            grilleParent.selModel.selectLastRow();
          break;
     
          default:
          break;
        }
         //recuperation de la cle primaire
        var recordLine = getProperties(grilleParent.selModel.getSelected().data, true);
        formulaire.render(document.body);
        formulaire.form.load
        (
          {
            //chargement du formulaire avec les donnes de la ligne en cours
            params: { data_id: recordLine, action: 0, frm_id: formulaire.frm_id }
          }
        );
        window.focus();
      }
    };
    Auriez-vous une idée de ce qui peut poser problème ?

  2. #2
    Membre averti
    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
    Points : 330
    Points
    330
    Par défaut
    bonjour,

    je ne peux pas trop apporter de réponse a ton problème ... cependant pour t aider a trouver une solution, tu devrais créer un event 'rowselect' a ton selectModel, et afficher une alerte avec pour contenu le numero de la ligne ...

    ca devrais a comprend ton bug ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par takitano Voir le message
    bonjour,

    je ne peux pas trop apporter de réponse a ton problème ... cependant pour t aider a trouver une solution, tu devrais créer un event 'rowselect' a ton selectModel, et afficher une alerte avec pour contenu le numero de la ligne ...

    ca devrais a comprend ton bug ...
    Bonjour,

    Merci pour ta réponse. Je vais essayer ta suggestion...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par HaveANiceDay Voir le message
    Bonjour,

    Merci pour ta réponse. Je vais essayer ta suggestion...
    J'ai trouvé d'où vient le problème grâce à l'API grid ==> rowSelectionModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    selectPrevious : function(keepExisting){
            if(this.hasPrevious()){
                this.selectRow(this.last-1, keepExisting);
                this.grid.getView().focusRow(this.last);
                return true;
            }
            return false;
        },
    Lorsqu'ext fait un previous ou unext il fait également un focusRow.
    Ce qu'il ne fait pas sur selectFirst et selectLast.
    D'où la perte de focus uniquement sur previous ou next !

    Je pense pouvoir maintenant contourner le problème.
    Merci en tout cas pour ta réponse.

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

Discussions similaires

  1. [XL-2013] Rechercher et lister des données dans une feuille depuis un formulaire
    Par UZeInDub dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2015, 09h49
  2. Masquer une image dans un état depuis un formulaire
    Par triistaan dans le forum Access
    Réponses: 9
    Dernier message: 29/04/2014, 19h26
  3. [AC-2003] Ajouter un élément dans une liste depuis un autre formulaire
    Par fonfek24 dans le forum IHM
    Réponses: 5
    Dernier message: 04/07/2011, 15h35
  4. Réponses: 2
    Dernier message: 02/07/2010, 18h16
  5. Réponses: 5
    Dernier message: 09/10/2008, 19h14

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