OVH Cloud OVH Cloud

Comment filtrer une Datagrid avec des Combobox

1 réponse
Avatar
shinosuka
Bonjour ? tous,

Je d?sire faire des "filtres imbriqu?s", qui agissent les uns sur les autres ?
partir de plusieurs combobox.

J'arrive ? filtrer une Datagrid ? partir d'une Combobox en appelant la
fonction setFilter suivante :

// Fonction de filtrage de la colonne "nb_heure"
setFilter = new Object();
setFilter = function() {
//trace(heure.value);
if (heure.value == 0) {
personnel_ds.filtered = false;
} else {
personnel_ds.filtered = true;
personnel_ds.filterFunc = function(item:Object) {
//trace(heure.value);
return(item.nb_heure >= heure.value);
}
}
}

Cette fonction filtre les donn?es, champ nb_heure, en fonction du nombre
d'heure s?lectionn? dans celle-ci (heure.value).

Q. : Comment faire la m?me chose ? partir de 2 Combobox en m?me temps, celle
utilis?e "heure" filtrant le nombre d'heure et une autre "age" filtrant l'age
de la personne affich?e dans la Datagrid ?
Bien s?r, il faut par exemple pouvoir afficher toutes les personnes de moins
de 30 ans ayant r?alis? plus de 4h d'activit?.
Ce qui veut dire 2 return en m?me temps, ? savoir :
return(item.nb_heure >= heure.value);
return(item.age <= age_select.value);

1 réponse

Avatar
Philippe Nomail
Bonjour, Il faut d?finir deux m?thodes change sur les combobox. Ces m?thodes
appelle une fonction changeMyFilter. La fonction changeMyFilter analyse les
items s?lectionn?s dans les combobox et applique un filtre simple ou un filtre
avec des ET If (index1 !=0 &amp;&amp; index2 !=0) { personnel_ds.filtered =
true; personnel_ds.filterFunc = function(item : Object) { return(item.nb_heure
= heure.value &amp;&amp; item.age <= age_select.value); } Il faut pr?voir les


autres cas. A la fin de cette fonction, tu n'oublie pas de res?lectionner la
ligne 1 de ton datagrid avec un doLater pour repropager les databinding si tu
en as... Pour un exemple tr?s simple, tu peux voir ici:
http://philflash.inway.fr/dgfilter/dgfilter.html PhilFlash
http://philflash.inway.fr