Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2012, 18h41   #1
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Par défaut Afficher un objet json complexe dans un datagrid ?

C'est encore moi,

J'ai maintenant un soucis avec dojox.grid.DataGrid.
Je voudrais le mapper avec une liste d'objets Json. Ces objets Json possède des sous-objets en propriété, et je voudrais afficher une de ces propriétés dans la grille.

Lorsque j'affiche une propriété "root", ça fonctionne. Mais lorsque je souhaite afficher une propritété d'un sous-objet, ça m'affiche "...". Je ne comprends pas. Y'a-t-il un moyen de remédier au problème ?

Voici un exemple d'un tableau Json :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
    {
        "id": 1,
        "userInfo": {
            "id": 1,
            "group": {
                "name": "my_group",
                "id": 1
            },
            "fullName": "Admin ADMIN",
            "isEnable": true,
            "firstname": "Admin",
            "lastname": "ADMIN"
        },
        "password": "my_pass",
        "login": "admin",
    }
]
Voici ma structure :
Code :
1
2
3
4
5
6
7
8
9
10
11
grid = new dojox.grid.DataGrid({
	store: dataStore = dojo.data.ObjectStore({objectStore: accountsStore}),
	structure: [
		{name:"Id", field:"id", width: "50px"},
		{name:"User", field:"userInfo.fullName", width: "200px"},
		{name:"Email", field:"userInfo.email", width: "200px"},
		{name:"Group", field:"userInfo.group.name", width: "200px"},
		{name:"Status", field:"userInfo.isEnable", width: "200px"},
		{name:"Login", field:"login", width:"200px"}
	 ]
}, "accounts-table");
Le field 'id' s'affiche correctement, le field 'userInfo.fullName' affiche "..." à la place de la valeur.
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 19h35   #2
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Hellow !

J'ai trouvé une solution en feuilletant la doc pour un tout autre problème : en voulant formater une cellule.
J'ai alors lu ceci :
Citation:
If you set the value of the field to “_item”, then your formatter will be called with the entire item from the store - instead of just one field value
J'ai donc modifié mon code comme suit et ça fonctionne :
Code :
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
// Create the grid
grid = new dojox.grid.DataGrid({
	store: dataStore = dojo.data.ObjectStore({objectStore: accountsStore}),
	structure: [
		{name:"Id", field:"id", width: "50px"},
		{
			name:"User", 
			field:"_item", 
			width: "350px", 
			formatter:function(item){
				return item.userInfo.fullName + 
					" <a href='" + lib.utils.appBaseUrl + "admin/accounts/view/" + item.id + "'>[view]</a> " +
					" <a href='" + lib.utils.appBaseUrl + "admin/accounts/edit/" + item.id + "'>[edit]</a>";
			},
		},
		{
			name:"Email", 
			field:"_item", 
			width: "350px",
			formatter:function(item){
				return item.userInfo.email;
			}
		},
		{
			name:"Group", 
			field:"_item", 
			width: "200px",
			formatter:function(item){
				return item.userInfo.group.name;
			}
		},
		{
			name:"Status",
			field:"_item", 
			width: "60px",
			formatter:function(item){
				return item.userInfo.isEnable;
			}
		}
	],
}, "accounts-table");
Si vous avez une meilleure solution, je suis preneur. Mais je trouve celle-là plutôt propre et facile à maintenir...

Enjoy !
andlio est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h21.


 
 
 
 
Partenaires

Hébergement Web