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
Mon problème étant:
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>
- 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.- 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):
ç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");)
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); }
Ou alors le renderer qui fait le fourbe mais il fait pas grand chose:
Voilà si une bonne âme veut venir à mon secours je suis preneuse! :oops::mrgreen:
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(); } }
Partager