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 :

Json et TreeGrid


Sujet :

Ext JS / Sencha

  1. #1
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut Json et TreeGrid
    Bonjour,

    J'ai un TreeGrid dans lequel mes données ne s'affiche pas.
    Je n'est aucune erreur dans firebug (ni ailleurs ^^)

    Voici la construction de mon store :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var storeRessGridClass = new Ext.data.JsonStore({ 
    	storeId: 'storeRessGridClass',
    	url: 'asp/webService.aspx',
    	root: 'results',
    	fields: [
    		'idApp', 'IdUnv', 'nameUnv', 'id', 'name', 'description', 'emplacement', 'nombreObj'
    	]
    });
    voici la construction de mon TreeGrid :
    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
    var gridRessClassUni = new Ext.ux.tree.TreeGrid({
    	id: 'gridRessClassUni',
    	store: 'storeRessGridClass', 
    	border: false,
    	loadMask: {msg: 'Chargement ...'}, 
    	columns: [ 
    		{
    			header: 'Nom', 
    			width: 200, 
    			sortable: true, 
    			dataIndex: 'name' 
    		},{
    			header: 'Description',
    			width: 500,
    			sortable: true,
    			dataIndex: 'description'
    		},{
    			header: 'Emplacement',
    			width: 150,
    			sortable: true,
    			dataIndex: 'emplacement'
    		},{
    			header: 'Nombre d\'objet',
    			width: 150,
    			sortable: true,
    			dataIndex: 'nombreObj'
    		}
    	],
    	bbar: {
    		xtype: 'paging',
    		pageSize: 3,
    		store: 'storeRessGridClass',
    		displayInfo: true,
    		afterPageText: ' sur {0}',
    		displayMsg: 'Affichage de {0} à {1} sur {2}',
    		emptyMsg: 'Aucune données à afficher'
    	}
    });
    Voici la structure de mon Json retourné :
    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
    [
        {
            "name": "classe1",
            "description": "description classe",
            "emplacement": "un emplacement",
            "nombreObj": "5",
            "iconCls": "task-folder",
            "id": 1,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "UNI_PAR"
        },
        {
            "name": "classe2",
            "description": "description Classe 2",
            "emplacement": "un emplacement",
            "nombreObj": "5",
            "iconCls": "task-folder",
            "id": 2,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "UNI_PAR"
        },
        {
            "name": "classe 3",
            "description": "description classe 3",
            "emplacement": "un emplacement",
            "nombreObj": "5",
            "iconCls": "task-folder",
            "id": 3,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "UNI_PAR"
        }
    ]
    Sachant que avant de mettre des enfants je voudrais afficher une première liste ^^

    Si vous aviez une petite idée : )))
    # apt-get install freedom

  2. #2
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Il te manque un élément important dans la structure de ton JSON, c'est le paramètre leaf.
    Leaf, false: cet élément possede des fils
    Leaf, true: cet élément ne possede pas de fils


    Ensuite, essayes de charger tes données avec un treeLoader:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    storeLoader = new Ext.tree.TreeLoader({
            dataUrl: 'asp/webService.aspx',
            baseParams: 'tes params si tu en as',
           ...
        });
    Définition de la racine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var root = new Ext.tree.AsyncTreeNode({
            id: '0',
            text: 'source', //texte du noeud
            allowDrag: false,
            allowDrop: false
        });
    pour finir, ton treegrid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    monTreeGrid = new Ext.ux.tree.TreeGrid({
            title: 'mon titre',
            id: 'monId',
            width: ...,
            height: ...,
            renderTo: '...',
            enableDD: true,
            rootVisible: false,
            animate: true,
            enableSort: false,        
            autoScroll: true,
            loader: storeLoader,
            root: root,
            columns: [{  ...
    Non l'homme ne descend pas du singe, il descend plutôt du mouton..

  3. #3
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Bonjour,

    Je te remercie pour la réponse qui m'a permis d'avancer une petit peu.
    Je rencontre par contre une erreur:
    node.attributes is undefined
    if (node.attributes.children) {
    Dans le fichier ext-all-debug.js à la ligne 35695
    Sachant que je n'est pas touché à ce fichier j'ai du mal à voir ou est mon erreur :/

    Pour résumé, j'ai construis mon treeLoader, puis mon treeGrid, puis mon panel (accordéon) sur lequel j'ai un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    listeners: {
    	expand: function()
    	{
    		treeloader.load(
    			{
    				params: {
    					task: 'trucmuche'
    				}
    			}
    		);
    	}
    }
    Mon accordéon contient un items qui est mon tableau.
    J'ai fais la même chose avec des tableau simple sans que cela me pose de problème, donc je comprend pas la
    # apt-get install freedom

  4. #4
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Peux-tu poster ton treegrid, ton treeloader, la définition de ta racine ainsi que l'aspect de ton JSON ?

    Visiblement Extjs ne sait pas interpréter les fils de tes noeuds, surement un pb de construction de ton JSON ou au niveau de ton TreeLoader/Racine
    Non l'homme ne descend pas du singe, il descend plutôt du mouton..

  5. #5
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Je ne peu malheureusement pas poster le Json car je tombe en erreur avant le retour du serveur donc impossible de l'avoir :/

    Voici mon TreeLoader:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var storeRessGridClass = new Ext.tree.TreeLoader(
    	{
    		id: 'storeRessGridClass',
    		dataUrl: 'asp/webService.aspx'
    	}
    );
    Mon TreeGrid:
    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
    var gridRessClassUni = new Ext.ux.tree.TreeGrid({ 
    	id: 'gridRessClassUni',
    	loader: storeRessGridClass,
    	border: false,
    	rootVisible: false,
    	root: '',
    	loadMask: {msg: 'Chargement ...'},
    	columns: [
    		{
    			header: 'Nom', 
    			width: 200, 
    			sortable: true, 
    			dataIndex: 'name' 
    		},{
    			header: 'Description',
    			width: 500,
    			sortable: true,
    			dataIndex: 'description'
    		},{
    			header: 'Emplacement',
    			width: 150,
    			sortable: true,
    			dataIndex: 'emplacement'
    		},{
    			header: 'Nombre d\'objet',
    			width: 150,
    			sortable: true,
    			dataIndex: 'nombreObj'
    		}
    	]
    });
    Et la racine :
    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
    ...
    items: [
    	{ 
    		xtype: 'panel',
    		id: 'ressDescUniListClass',
    		title: 'Liste',
    		border: false,
    		collapsed: true,
    		iconCls: 'uni',
    		autoScroll: true,
    		layout: 'fit',
    		listeners: {
    			expand: function(obj) { 
    				storeRessGridClass.load(
    					{
    						params: {
    							task: 'ressListClass',
    							idUser: myCookie.state.monCookie.idUser,
    							idApp: ressIdApp.attributes.id,
    							idUnv: ressIdUnv,
    							start: 0,
    							limit: 3
    						}
    					}
    				);
    			}
    		},
    		items: gridRessClassUni
    	}
    ]
    [EDIT]
    Voici mon Json :
    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
    [
        {
            "name": "classe1",
            "description": "description classe",
            "emplacement": "un emplacement",
            "nombreObj": 5,
            "leaf": true,
            "id": 1,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "FACT_PAR"
        },
        {
            "name": "classe2",
            "description": "description Classe 2",
            "emplacement": "un emplacement",
            "nombreObj": 5,
            "leaf": true,
            "id": 2,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "FACT_PAR"
        },
        {
            "name": "classe 3",
            "description": "description classe 3",
            "emplacement": "un emplacement",
            "nombreObj": 5,
            "leaf": true,
            "id": 3,
            "idApp": 5,
            "idUnv": 11,
            "nameUnv": "FACT_PAR"
        }
    ]
    # apt-get install freedom

  6. #6
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Essaye de rajouter cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var monRoot = new Ext.tree.AsyncTreeNode({
            id: '0',
            text: 'source', //texte du noeud
            allowDrag: false,
            allowDrop: false
        });
    et dans ton treeGrid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var gridRessClassUni = new Ext.ux.tree.TreeGrid({ 
    	id: 'gridRessClassUni',
    	loader: storeRessGridClass,
    	border: false,
    	rootVisible: false,
    	root: monRoot,
    	loadMask: {msg: 'Chargement ...'},
    ...
    Non l'homme ne descend pas du singe, il descend plutôt du mouton..

  7. #7
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Merci pour cette réponse.
    Je n'est pas encore testé et je ne pourrais pas tester de suite car je dois finir une autre partie avant ce qui va faire partie d'une autre question ^^
    Je posterais ici après avoir tester : )))
    # apt-get install freedom

  8. #8
    Futur Membre du Club
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    salut abraxis
    est ce que tu as réussi à le faire?
    est ce que c possible de partager avec nous?
    j'essai de faire la meme chose depuis trois semaines mais j'y arrive pas

    merci davance

  9. #9
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Je suis désolé de ne pas voir répondu mais pour le moment je n'utilise pas cette solution, donc je me suis juste arrêté au test que tu peu voir ci-dessus

    Mais je ne ferme pas le post car je retournerais dessus pour arriver à le faire fonctionner.
    # apt-get install freedom

Discussions similaires

  1. Chargement JSON dans un TreeGrid
    Par JulienFio dans le forum Ext JS / Sencha
    Réponses: 5
    Dernier message: 01/10/2010, 09h29
  2. [AJAX] Récupération d'un fichier JSON avec javaScript
    Par guerin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/11/2006, 19h05
  3. A la recherche d'un parser JSON
    Par hugo123 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 26/09/2006, 16h48
  4. parse JSON et expression régulière
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/06/2006, 16h39
  5. [Framework] API JSON
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 20/03/2006, 11h08

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