Trier une liste

astrolabbcracker Messages postés 106 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 11 juin 2012 - 18 avril 2009 à 11:32
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 - 21 avril 2009 à 10:20
Bonjour et tous et merci de lire ce message.

J'ai un composant List qui contient environ 3000 lignes et classé par ordre alphabétique. En label, c'est le nom du client et en data, c'est le numéro du dossier.

Je veux utiliser un champs texte pour dérouler ma liste lorsque je commence à entrer le nom d'un client. Par exemple, je tape d et ma liste avance jusqu'aux noms qui commencent par d...

Comment relier en actionscript mon champs texte et ma liste ? Existe-t-il une méthode moins lourde que faire une boucle à chaque "change" du texte du style for(i=0, 1<liste.length, i++){if(liste.getitem().data=="d"){... ? 3000 entrée ça va ramer...

Merci de votre aide.

1 réponse

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
21 avril 2009 à 10:20
Bonjour,

es-tu sur que ca va ramer ? Cela dépend de l'ordi évidemment.
Bon, je sais pas s'il existe une méthode toute faite pour ton probleme, mais il doit y avoir moyen de solidement l'optimiser !!!

parametrons 2 variables
var indiceStart:Number= 0
var indiceStop:Number=liste.length
var sequence:String="" // la ou les lettres tapées pour la recherche

var found:Number= indiceStart
for(i =indiceStart, i< indiceStop, i++){

 if(liste.getitem().data= = sequence ){
   if (found == indiceStart ){
       found =i
       indiceStart= i
   }
}else{
    if (found!= indiceStart ){
       indiceStop =i
       break;
    }
}
}
// ensuite tu fais avancer ta liste jusqu'à indiceStart (ou found, c'est pareil)

Avec ce systeme tu ne parcoureras jamais la liste entière (sauf si aucun item ne commence par la lettre que tu a taper en premier)
Et surtout, si tu tape une deuxieme lettre, la recherche commencera non plus a 0 mais au premier indice trouvé précedemment, et s'arretera dès le changement de lettre

Attention à bien remettre a zero les compteurs si on change la séquence de lettre... voir socker dans un tableau les incides successifs pour optimiser les retours...

@+
0
Rejoignez-nous