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 :

Formulaire et Grille


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut Formulaire et Grille
    Bonjour,

    Me revoici avec un nouveau problème. J'ai une grille, dont le contenu est le résultat d'une recherche effectuée précédemment. Jusque là, tout va bien. Maintenant, j'aimerais faire en sorte que lorsque l'on clique sur une ligne, cela nous emmène sur la page contenant les informations détaillées de l'objet correspondant à la ligne en question. Et je dois avouer que j'ai pas mal de soucis au niveau de la syntaxe des évènements surtout...Ci-dessous l'ébauche de code correspondant :

    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
     
    var store = new Ext.ux.data.PagingArrayStore({
         // Store qui sera charge dans notre grille
    });
    var columnModel = new Ext.grid.ColumnModel({
        // ColumnModel qui sera charge dans notre grille                    
    });
    var grid = new Ext.grid.GridPanel({
         widthColumn: 1,
         autoHeight: true,
         enableColumnResize: false,
         store: store,
         plugins: checkColumn,
         cm: columnModel,
         viewConfig: {
              enableRowBody: true
         },
         selectionModel: new Ext.grid.RowSelectionModel({
              singleSelection: true,
              listeners: {
                   rowbodyclick: function (grid,rowIndex,e) {
                        alert('coucou'); // Lorsque je clique sur une ligne, rien n'apparaît pour le moment
                   }
              }
         }),
         bbar: new Ext.PagingToolbar({
              // Pagination
         })
    });
    Si jamais cela peut aider, le code de la grille en question est plus détaillée à la fin de cette discussion.

    En outre, je ne vois pas trop comment faire pour récupérer les données de ma grille afin de savoir quel élément affiché dans la page suivante. Je me doute qu'il va falloir envoyer des données comme pour un formulaire, mais sinon...

    Mako

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Bonjour Mako,

    Pour ma part, je fais un lien hypertexte dans un champ de la ligne qui va appeler une méthode edit côté serveur. Il te faut passer aussi l'id de ton enregistrement dans le data store, pour que le serveur puisse l'afficher :
    Data store
    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
     
    // create the data store
        var dataStore = new Ext.data.Store({
    		proxy: new Ext.data.HttpProxy({
    			url: Ext.app.baseUrl + '/consultclients/getSearchDatas'
    		}),
    		// create reader that reads the Topic records
    		reader: new Ext.data.JsonReader({
    			totalProperty: "results",
    			root: "rows",
    			fields: [
    				//definition des champs
    				{name: 'cli_id'},
    				{name: 'cli_name'},
    				{name: 'cli_adresse'},
    			    {name: 'ca'},
    				{name: 'tic'},
    				{name: 'cli_rdv_dt'}
    			]
    		}),
    Grid panel
    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
     
    var grid = new Ext.grid.GridPanel({
            columns: [
    			{header: "Action", width:80,sortable: true,  dataIndex:   'Consulter', renderer:
    			function(value, metadata, record, rowIndex, colIndex, store) {
    				return Ext.app.flecheDroite
    				+ '<a href="'
    				+ Ext.app.editAction
    				+ record.data.cli_id
    				+ '" title="Consulter">'
    				+ 'Consulter'
    				+'</a>';
    			}},
    			{header: "Client", width:200,sortable: true, dataIndex: 'cli_name'},
    			{id:'adrCol', header: "Adresse", width:310,sortable: true, dataIndex: 'cli_adresse'},
    			{header: "CA",   width:120,sortable: true, dataIndex: 'ca'},
    			{header: "Technicien",   width:120,sortable: true, dataIndex: 'tic'},
    			{header: "Date de rdv",   width:80,sortable: true, dataIndex: 'cli_rdv_dt', renderer: Ext.util.Format.dateRenderer('d/m/Y')}
            ],
    		loadMask:true,

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Bonjour,

    Pour ma part, je fais un lien hypertexte dans un champ de la ligne...
    Le soucis, c'est que les clients sont habitués à devoir "juste" cliquer sur la cellule de la table, et j'aimerais autant que possible garder cela en l'état. Mais merci tout de même de ton idée, je la garde en réserve, au cas où...

    N'y a-t-il personne qui sache comment gérer un évènement sur une grille ? (clique sur ligne, sur cellule, etc.)

    Mako

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

    remplace singleSelection par singleSelect
    et
    selectionModel par selModel

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Bon, j'ai réussi à m'en sortir, mais pas vraiment en suivant les pistes que vous m'avez proposé.

    Pour faire ce que je voulais, j'ai changé mon panel contenant ma grille par un formPanel, auquel j'ai accolé deux champs cachés, servant à envoyer les valeurs nécessaires issues de la ligne sélectionnée.

    Pour l'appel à la fonction, avec la syntaxe suivante, cela fait ce que je souhaite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var grid = new Ext.grid.GridPanel({
         // config de ma grille
         listeners: {
              rowclick: function(g,index,ev) {
                   champCache1.setValue('maValeur');
                   champCache2.setValue(g.store.getAt(index).get('maValeurDansMaGrille'));
                   formPanel.getForm().submit(); 
                   //formPanel est le nom de mon formPanel...
              }
         }
    });
    Merci à vous pour l'aide.

    Mako

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2010, 18h16
  2. Positionner des éléments de formulaire sur une grille
    Par Jiyuu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/08/2009, 16h49
  3. Grille dans un formulaire en VB.NET
    Par emayen01 dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/04/2009, 16h09
  4. Réponses: 2
    Dernier message: 05/08/2007, 10h58
  5. Une grille Excel dans un formulaire
    Par domb_st dans le forum IHM
    Réponses: 5
    Dernier message: 21/05/2007, 09h41

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