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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    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 : )))

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    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: [{  ...

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    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

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    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

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    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"
        }
    ]

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    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 ...'},
    ...

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