Bonjour,

Je suis actuellement entrain de créer un carnet d'adresses en Flash à partir d'un fichier XML.

J'arrive à lire tous mes contacts de mon XML et à les mettre dans un datagrid.

Maintenant, j'aimerai trier cette liste selon le type du contact (ami, famille...)

En fait, quand je cliquerai sur le bouton famille, n'apparaitront dans le datagrid que les contacts de type famille.

Comment faire cela ?

Je vous joins mon code actuel :
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
 
 
system.useCodepage = true;
//Déclaration d'un XML
myXML=new XML();
//On ignore les espaces dans notre fichier xml
myXML.ignoreWhite=true;
 
myXML.load("xml/contacts.xml");
//SI CHARGEMENT OK ALORS
myXML.onLoad = function (ok){
	if (ok)
	{
		//initialisation d'un compteur de noeuds
		n = 0;
		//on place la tête delecture sur le premier noeud 'comment' du fochier 'adresses.xml'
		x=myXML.firstChild;
		// création de l'objet Array 'donnees' contenant les donnees du composant 'list_demo'
		donnees = new Array();
		//2ème 'Array qui nous servira pour le tri alphabéthique de la liste, vu que l'on ne peut pas classer lors de l'enregistrement
		//en effet, chaque nouvel enregistrement est écrit en ligne 2 dans le fichier XML
		donneestri = new Array();
		//Tant qu'il y a des noeuds 'comment'
		while (x.childNodes[n] != undefined)
	{
 
// On remplit le tableau 'Array' avec les valeurs des atrributs du noeud n
donnees[n] = {type:x.childNodes[n].attributes.type, nom:x.childNodes[n].attributes.nom, prenom:x.childNodes[n].attributes.prenom, telephone:x.childNodes[n].attributes.telephone, mail:x.childNodes[n].attributes.mail, adresse:x.childNodes[n].attributes.adresse, CP:x.childNodes[n].attributes.CP, ville:x.childNodes[n].attributes.ville, naissance:x.childNodes[n].attributes.naissance};
//Noeud suivant
n++;
	}
// Tri Alphabéthique par l'identité du contact
donnees.sortOn(["nom"])
 
//on définit un compteur pour regarder le nombre d'enregistrements de notre premier 'Array'
for(i=0; i<donnees.length; i++){
//Et on remet tout ça dans l'ordre
donneestri[i] = {type:donnees[i].type, nom:donnees[i].nom, telephone:donnees[i].telephone, mail:donnees[i].mail, adresse:donnees[i].adresse, CP:donnees[i].CP, ville:donnees[i].ville, naissance:donnees[i].naissance};
}
//On peut désormais remplir notre datagrid 'list_demo'
	//création des colonnes même si on va s'arranger à l'image suivante de n'afficher que l'identité dans
	//notre datagrid, le tableau contient en réalité tous les champs.
	list_demo.columnNames = ["nom"];
	//On renomme l'entête du champ 'Id' pour plus de compréhension pour le lecteur
	col = list_demo.getColumnAt(0);
	col.headerText = "Identité de la personne";
 
list_demo.dataProvider = donneestri;
// permet la séléction multiple dans le composant 'list_demo', quand la touche 'Ctrl' est enfoncée
//ici, on n'en veut pas
list_demo.multipleSelection = false;
	}
}
 
var dgListener:Object = new Object();
dgListener.change = function(evt_obj:Object) {
 for (var i = 0, j = 1; j<=list_demo.selectedItems.length; i++, j++) {
// affiche le contenu des valeur 'data' des éléments choisis dans la fenêtre de sortie
Idtext.text = list_demo.selectedItems[i].nom;
Telephonetext.text = list_demo.selectedItems[i].telephone;
Mailtext.text = list_demo.selectedItems[i].mail;
Adressetext.text = list_demo.selectedItems[i].adresse;
Cptext.text = list_demo.selectedItems[i].CP;
Villetext.text = list_demo.selectedItems[i].ville;
Naissancetext.text = list_demo.selectedItems[i].naissance;
Mailtext.text = list_demo.selectedItems[i].mail;
Portabletext.text = list_demo.selectedItems[i].telephone;
 }
};
// Ajout de l'écouteur.
list_demo.addEventListener("change", dgListener);
//Pour envoyer un mail, par l'intermédiaire du clic sur le bouton, classique
Mailtext.onRelease = function() {
	getURL("mailto:" + Mailtext.label);
};
Merci beaucoup pour votre aide