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

Flex Discussion :

Format Date et tri dans une datagrid


Sujet :

Flex

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 43
    Points
    43
    Par défaut Format Date et tri dans une datagrid
    Bonjour à tous,
    Avant tout j'ai cherché un peu sur le forum et sur google mais je n'ai pas trouvé quelque chose qui résolve mon soucis donc pardon si j'ai raté "the article"

    Voilà j'ai une datagrid avec entre autre une colonne de date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <mx:DataGrid height="300" id="vList" dataProvider="{this.oList}" editable="false" change="Change(event);" width="100%" >
    							<mx:columns>
    								<mx:DataGridColumn width="80"  headerText="Date" dataField="DateCol" itemRenderer="renderer.ColRenderer" editable="false"   />
     
    								<!--d'autres colonnes avec itemRenderer="renderer.ColRenderer"-->
    							</mx:columns>
    						</mx:DataGrid>
    Mon problème étant:
    1. Soit je fais de mon "DateCol" un string au format que je veux ( grâce à la requête oracle avec laquelle je récupère les données et la fonction to_char)
      Tout se passe bien, ma datagrid affiche bien la date "à la française" comme je le souhaite (DD/MM/YYYY)
      Le problème vient quand on tente un tri sur la colonne via un clic sur le header, là manifestement et "normalement" j'ai envie de dire, mes champs de date "stringués" sont triés comme des strings c'est à dire que le 01/02/2015 sera avant le 03/01/2015 ... c'est donc assez moche.
    2. La solution "simple mais moche point de vue user" serait d'avoir ma date sous format YYYYMMDD mais si j'étais Gandalf ça serait ma Moria si je puis me permettre (comprend qui peu)
      Soit je fait de mon "DateCol" une date et si le tri se passe bien le format est dégueulasse du nom du jour jusqu'au fuseau horaire and co et en plus en anglais (le format par défaut quoi)


    Donc dans le cas 1 j'ai essayé des trucs comme une "sortcomparefunction" qui transforme les string en date temporaire et les compare. ca fait pédaler dans la semoule sévèrement vu que je peux avoir plusieurs milliers de données alors non pas la bonne solution je pense.
    Dans le cas 2 je me dit qu'il faudrait que je formate ma date "à la volée" avec un truc genre "dateformater"et/ou "renderer" parce que si je la formate "en coulisse" ( avec une autre variable quoi) et que j'affiche le résultat du formatage je retombe dans le cas 1 pour ce qui concerne le tri (je suis même pas sûre que la façon "à la volée" fonctionnerait pour ce tri.)

    Fin bref j'ai pas réussi à reformater ma date, soit ça marche pas (format dégueulasse "normal") soit plus rien ne s'affiche dans la datagrid.
    J'ai fait des trucs de ce genre (difficile de donner l'état des lieux j'ai essayé des trucs un peu dans tous les coins):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <mx:DataGridColumn width="80"  headerText="Date" dataField="DateCol" itemRenderer="renderer.ColPFLRenderer" editable="false" labelFunction="ConvertDate" />
     
    public function ConvertDate(item:Object):String 
    		{
    			var DateFormat 		: DateFormatter = new DateFormatter();
                            this.DateFormat.formatString 	= "DD/MM/YYYY";
                            return this.DateFormat.format(item.DateCol);
    		}
    ça ça m'a l'air fonctionnel , j'ai essayé un truc comme ça dans ma labelfonction mais est ce que je me plantais dans la façon de l'appeler ou je sais pas , j'ai jamais réussi à lui faire dire quelque chose (même pas un petit Alert.show("toto");)


    Ou alors le renderer qui fait le fourbe mais il fait pas grand chose:
    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
     
    override public function set data(value:Object):void 
    		{
    			super.data = value;
     
    			if (value != null) 
    			{
    				var t : Coli = value as Col;
     
    				if((t.Warning!="0")&&(t.Warning!="7"))
    				{
    			    	setStyle("color", "blue");	
    				}
    				else
    				{
    					setStyle("color", "black");
    				}
    				super.toolTip = t.toString();
     
    			}
     
    		}
    Voilà si une bonne âme veut venir à mon secours je suis preneuse! :oops::mrgreen:

  2. #2
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Ceci pourra peut-être t'aider Towandaa !

    Tu déclare le format que tu veux via DateTimeFormatter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <fx:Declarations>
            <!-- Déclaration du format de date -->  
            <s:DateTimeFormatter id="dateTimeFormatter" dateTimePattern="dd/MM/yyyy" errorText="Date invalide"/> 
    </fx:Declarations>
    Tu utilise ensuite l'attribut labelFunction de ta colonne qui appelle une fonction dateFormat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <mx:AdvancedDataGrid ...>
            <mx:groupedColumns>
                    <mx:AdvancedDataGridColumn dataField="dateCongelation" headerText="Date congel" headerWordWrap="true" labelFunction="dateFormat"/>
            </mx:groupedColumns>
    </mx:AdvancedDataGrid>
    Enfin tu rédige ta fonction dateFormat qui permet de formater ta colonne en type date au format souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private function dateFormat(item:Object,column:AdvancedDataGridColumn):String { 
    	return dateTimeFormatter.format(item.dateCongelation); 
    }

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Mygush Voir le message
    Ceci pourra peut-être t'aider Towandaa !

    Tu déclare le format que tu veux via DateTimeFormatter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <fx:Declarations>
            <!-- Déclaration du format de date -->  
            <s:DateTimeFormatter id="dateTimeFormatter" dateTimePattern="dd/MM/yyyy" errorText="Date invalide"/> 
    </fx:Declarations>
    Tu utilise ensuite l'attribut labelFunction de ta colonne qui appelle une fonction dateFormat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <mx:AdvancedDataGrid ...>
            <mx:groupedColumns>
                    <mx:AdvancedDataGridColumn dataField="dateCongelation" headerText="Date congel" headerWordWrap="true" labelFunction="dateFormat"/>
            </mx:groupedColumns>
    </mx:AdvancedDataGrid>
    Enfin tu rédige ta fonction dateFormat qui permet de formater ta colonne en type date au format souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private function dateFormat(item:Object,column:AdvancedDataGridColumn):String { 
    	return dateTimeFormatter.format(item.dateCongelation); 
    }
    merci du conseil, je réessayerai à l'occasion là je suis sur d'autres sujets mais je n'ai pas le préfixe "fx" de dispo dans l'immédiat ( bon il doit suffire d'un "import qqch" quelque part ...)
    Et mon objet n'est pas une advanceDatagrid ça j'avais pas dispo non plus....
    Mais en fait depuis le temps où j'ai écris ce message j'ai viré la compatibilité Flex 3.0 pour me mettre aux sparkscomponents donc c'est peut être dispo maintenant.

    je vais mettre résolu parce que la solution tiens surement debout mais dans mon cas je sais pas
    Dès que je saurais ce qu'il en est je reviens faire mon rapport !^^

    Merci en tout cas

  4. #4
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Effectivement, j'ai oublié de préciser que je passe par les sparkscomponents...
    Bon courage pour la suite !

  5. #5
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    J'ai oublié de préciser que la solution est applicable également avec un datagrid normal ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <mx:DataGrid>
        ....
        <mx:DataGridColumn dataField="dateCongelation" width="80" headerText="Date congel" headerWordWrap="true" labelFunction="dateFormat"/>
    </mx:DataGrid

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

Discussions similaires

  1. format date et heure dans une requete
    Par amelyfred dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2015, 11h23
  2. [XL-2010] Format date anglo saxon dans une pivot table
    Par Skootman dans le forum Excel
    Réponses: 6
    Dernier message: 03/09/2014, 08h49
  3. Tri dans une datagrid paginée
    Par Asce. dans le forum Flex
    Réponses: 4
    Dernier message: 21/03/2010, 21h39
  4. format de la date du jour dans une requete
    Par Chauveau dans le forum Access
    Réponses: 2
    Dernier message: 21/11/2006, 21h15
  5. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32

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