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 :

rafraichir une 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 rafraichir une grid
    Bonjour

    C'est le front rouge de honte que je reviens sur ce forum pour poursuivre une discussion que je pensai terminée.

    J'affiche 2 grids dans ma page. La grid 2 s'affiche en fonction du choix d'une ligne de la grid 1. Ca : ça fonctionne.
    Mais lorsque je clique sur une autre ligne de la grid 1, une troisième grid apparait sous la grid 2 alors que je souhaiterai simplement un rafraichissement de la grid 2.
    Je viens de lite le post de Bqiko et la réponse, mais j'utilise un "store.loadData" et il n'existe pas de "reLoadData" !

    ci-dessous le code d'affichage de la grid 1 :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    function Construit_grid()
    {
    Ext.onReady(function(){
    var selectBox = document.getElementById("ListeProc"); 
    	var nb = selectBox.options.length; 
    	var mydata = new Array();
    	for (var i=0; i<nb; i++) { 
    		morceaux=selectBox.options[i].value.split(',');
    		var d_transition = new Array;
    		for (var j=0; j<3; j++) { 
    			d_transition.push(morceaux[j]); 
    			 					};
    			mydata[i] = d_transition; 
    								} ;
     
        var store = new Ext.data.ArrayStore({
            fields: [
               {name: 'Processus'},
               {name: 'Nom', type: 'string'},
               {name: 'Nb', type: 'int'},]
     
        });	
     
        store.loadData(mydata);
     
        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;
    			ligne = record.data.Nb;
    			document.DDT.proc.value=toto;
    		Ext.Ajax.request({
    		   url: 'Ajax_DDT.php',
    		   method:"POST",
    		   success: function(result,request) {
    			var mydata2 = new Array();
    			morceaux=result.responseText.split(',');
    			for (var i=0; i<ligne; i++) { 
    			        var d_transition = new Array;
    			        for (var j=0; j<4; j++) { 
    				d_transition.push(morceaux[(i*4)+j]); 
    									};
    				mydata2[i] = d_transition; 
    									} ;
    				grid_ddt(mydata2);
    			},
    		   failure: function ( result, request) { 
    			Ext.MessageBox.alert('Problème', result.responseText); },
    		   headers: {
    			   'my-header': 'DDT'
    		   },
     			params: {proc:toto},
    		});
     
    								                 }
                 	},
     
          }),
            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,
    //        autoExpandColumn: 'Processus',
            height: 155,
            width: 270,
            title: 'Processus',
            stateful: true,
            stateId: 'grid'
        });
     
        	grid.render('grid-example');
    					 })
     
    }
    ci-dessous le code d'affichage de la grid 2 :
    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
     
    function grid_ddt(resultat)
    {
    Ext.onReady(function(){
     
    var store2 = new Ext.data.ArrayStore({
    	fields: [
    	{name: 'Code'},
    	{name: 'Nom_ddt', type: 'string'},
    	{name: 'Etat', type: 'string'},
    	{name: 'Nom_dirpro', type: 'string'}]
    						});		
     
        	store2.loadData(resultat);
     
    		var grid2 = new Ext.grid.GridPanel({
    			store: store2,
    	columns: [
    {id:'Code',header: 'Code', width: 100, sortable: true, dataIndex: 'Code'},
    {header: 'Nom_ddt', width: 310, sortable: true,  dataIndex: 'Nom_ddt'},
    {header: 'Etat', width: 158, sortable: true,  dataIndex: 'Etat'},
    {header: 'Nom_dirpro', width: 138, sortable: true,  dataIndex: 'Nom_dirpro'}],
     
    	stripeRows: true,
    	height: 155,
    	width: 717,
    	title: 'DDT',
    	stateful: false,
    	stateId: 'grid2							});
     
    		grid2.render('grid-example2');
     
    	});	
    }
    et le php qui les lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    echo "<script>lance('Projet : ".$_SESSION["LIB_PRT_choisi"]."');</script>";
    echo "<script>lance('Palier : ".$lib_palier."');</script>";
     
    echo "<SELECT id='ListeProc' style='display: none' Name='ListeProc'  size='5' align='left'>";
    while ($proc_trouve = mysql_fetch_array($proc, MYSQL_NUM))
                        {           $LignePip=$proc_trouve['0'].",".$proc_trouve['1'].",".$proc_trouve['2'];
    echo "<option value=\"$LignePip\">".$LignePip."</option>";
                        }
    echo "</SELECT>";
    echo "<script>Construit_grid();</script>";
               ?>
    Quelqu'un peut-il m'expliquer ?

    cordialement
    madmax

  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,

    Alors j'ai pas compris grand chose ...
    mais, je pense que le render doit ajouter ton nouveau composant a l'interieur du div existant ...

    Essayes de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ext.get('grid-example2').removeAll();
    grid2.render('grid-example2');

  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 Takitano

    c'est probablement ça.
    le "render" refait la grid en dessous de la précédente alors que j'ai pourtant spécifié dans le CSS sa position absolue.

    mais pour ta solution, fireBug me dit :
    Ext.get("grid-example2").removeAll is not a function !

    help !
    cordialement

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

    j'utilise jamais de div existante dans le body ... alors, je ne peux te donner une réponse exacte ...
    essayes ca ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //a placer avant ton var grid2 = new Ext.gridPanel(... !
     
    if(typeof(grid2)!="undefined")
       grid2.removeAll();
    ou sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //avant le render('grid-example2';)
    Ext.get('grid-example2).remove();

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

    la solution :
    if(typeof(grid2)!="undefined")
    grid2.removeAll();
    ne donne pas d'erreur mais ne change rien. Je continue à obtenir d'autres "grid2", les unes en dessous des autres !

    la solution :
    //avant le render('grid-example2'
    Ext.get('grid-example2).remove();
    génère une erreur :
    "b is null"

    mais c'est peut-être normal puisqu'alors la div est détruite !

    Je pense qu'il faudrait plutôt chercher à "Rafraichir" la grid au lien de faire un "render" mais je ne sais pas comment faire !

    Quoi qu'il en soit, merci de ton aide.
    cordialement

  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
    a partir du code suivant,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //avant le render('grid-example2'
    Ext.get('grid-example2').remove();

    essayes de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //avant le render('grid-example2'
    Ext.get('grid-example2').first().remove();
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //avant le render('grid-example2'
    Ext.get('grid-example2').down().remove();

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

Discussions similaires

  1. [C#]Rafraichir une image
    Par Scorff dans le forum ASP.NET
    Réponses: 7
    Dernier message: 21/06/2013, 18h53
  2. [JTable] Rafraichir une JTable
    Par Invité dans le forum Composants
    Réponses: 4
    Dernier message: 08/12/2004, 13h40
  3. [jsp]rafraichir une page
    Par GreenJay dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/07/2004, 14h41
  4. [Conception][Langue] Rafraichir une application
    Par smash31 dans le forum Général Java
    Réponses: 5
    Dernier message: 06/07/2004, 14h04
  5. [API] Rafraichir une fenetre ?
    Par laurent_h dans le forum Windows
    Réponses: 2
    Dernier message: 17/04/2004, 23h26

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