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

Flash Discussion :

[FLASH 8] DataGrid - tri par rapport à la colonne


Sujet :

Flash

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut [FLASH 8] DataGrid - tri par rapport à la colonne
    est-il possible d'appliquer un tri particulier, dans un dataGrid, en fonction de la colonne ?

    sur la colonne nom, je souhaite appliquer un tri alpha
    sur la colonne date de naissance, un tri par date
    ...

    mais fonction de tri sont deja definit et ne me pose aucun pb....

    Merci d'avance

  2. #2
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello
    Le DataGrid possède un model qu'on appelle le DataProvider... tu as lu la doc des composants à ce sujet ? Dedans tu verras que le dataProvider (qui est un tableau d'objet un peu particulier) permet de trier le contenu.
    PS : attention ... le tri interne de flash est le plus rapide que tu puisses avoir sur un tableau ! Cela ne sert à rien de trier tes tableaux avec tes propres fonctions si la fonction de tri existe déjà
    Il faut bien regarder la classe Array à ce sujet et les méthodes sortOn et sort que la classe DataProvider utilise justement

    EKA+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut [FLASH 8] DataGrid - tri par rapport à la colonne
    ok !

    en fait, comment fais-tu pour detecter que c'est la premiere colonne ou la deuxieme qui est demandée ?

    a propos de mon tri personnalisé : j'utilise un tri par rapport au date (au format : jj/mm/aaaa)

    j'ai recherché pour voir s'il n'existait pas deja, mais j'ai rien trouvé alors je l'ai implémenté
    lol

    s'il existe, merci de me prevenir
    lol

  4. #4
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Les colonnes sont des objet de type DataColumn ou un truc dans le genre... le nom des colonnes c'est le nom des propriétés dans ton objet pour chaque ligne.... du coup tu peux trier par "field" (champ) ton tableau assez facilement et tu peux placer ta propre fonction de tri pour trier par date ou autre qui n'est pas un tri par défaut du DataGrid.. tout est dans l'aide en lisant doucement ce qui concerne le DataProvider et le DataGrid.
    Pour le tri des dates.. faut trier sur new Date().getTimer() ... transforme ta date en objet Date.. affiche le avec un DateFormatter (voir dans les classes de macromedia) et tu pourras facilement trier tes dates

    EKA+

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    alors j'utilise sortItemsBy

    dans le premier paramètre, je specifie le fieldName : dateNaissance


    il me faudrait aussi specifier, la function de comparaison que je souhaite appliquer, n'est-ce pas ?

    je ne comprends pas, il est possible de la passer en parametre de sortItems, mais pas de sortItemsBy ?

  6. #6
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    sortItems cela va comparer les objets dans chaque case du tableau du dataProvider...
    tu fais une fonction style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var compare = function (item1, item2) {
          var date1 = item1.date.getTimer() ;
          var date2 = item2.date.getTimer() ;
          if (date1 > date2) return 1 ;
          else if (date1 == date2) return 0 ;
          else return -1 ;
    }
    et c'est tout... item1 et item2 cela va être les objet dans ton tableau
    Là dans mon exemple je considère que date c'est une propriété de type Date !
    EKA+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    ha ok

    dans mon cas, dateNaissance est un champ string,
    contenant la date au format jj/mm/aaaa
    et je voudrai appliquer une fonction compare personnalisée

    c'est pas possible ?

  8. #8
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    oui tu peux.. tu fais pareil qu'au dessus... tu coupe la chaine de caractère de la propriété qui t'intéresse .. tu peux en faire un tableau par exemple (voir méthode de la classe String)... enfin moi .. si j'étais toi je ferais un truc du style :
    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
     
     
    var stringToDate = function ( format:String ) {
          // ici je décompose ma chaine de caractère en 3 nombres pour le mois, l'année et le jour
          var year = .... ; 
          var month = ... ; 
          var day = .... ; 
          var d = new Date( year, month, day) ;
          return d ;
    }
     
    var compare = function (item1, item2) {
          var date1 = stringToDate(item1.date).getTimer() ; // date champ ayant pour format jj/mm/aaaa 
          var date2 = stringToDate(item2.date).getTimer() ;
          if (date1 > date2) return 1 ;
          else if (date1 == date2) return 0 ;
          else return -1 ;
    }
    Bon c'est qu'une ébauche hein A toi de faire le reste

    EKA+

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    mais mon pb ne vient pas de la function de comparaison...

    je n'arrive pas à trier mon dataGrid par rapport a une colonne, avec un tri personnaliser (que j'ai deja et qui marche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	var myListener = new Object();
    	myListener.headerRelease = function(event) {
    //    		trace("column " + event.columnIndex + " header was pressed");
        		if (event.columnIndex == 4) {
    				trace("Tri par DN..");
    				event.dataProvider.sortItemsBy("dateNaiss", orderDate);
        		}
    	};
    	liste.data.addEventListener("headerRelease", myListener);

  10. #10
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    hello

    Dans ton objet renvoyé par la fonction callback de ton événement Tu as 2 propriétés importantes dans l'API EventDispatcher : type et target !
    Du coup faut pas oublier que ev... c'est pas le composant mais ev.target !
    Donc pour chopper ton dataProvider faut taper : ev.target.dataProvider

    N'hésite pas à utiliser des trace() pour voir quand tu fais des erreurs Je vois que tu l'utilises mais là tu l'as pas fait comme il faut je pense
    Je pense que ton problème vient déjà de là
    Aprés faut voir la suite

    EKA+

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    ha oui, merci,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tri matrice par rapport à une colonne
    Par Amergin dans le forum Caml
    Réponses: 4
    Dernier message: 30/09/2009, 14h59
  2. Réponses: 1
    Dernier message: 19/03/2009, 14h44
  3. datagrid tri par colonne
    Par meryem01 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/10/2007, 10h43
  4. tri par rapport à une liste dans la clause where
    Par umbakrail dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/07/2006, 11h32
  5. Tri par rapport à une liste de clés primaires
    Par yoyot dans le forum Langage SQL
    Réponses: 10
    Dernier message: 23/06/2006, 12h48

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