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 :

DataGrid, somme d'une colonne.


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 14
    Par défaut DataGrid, somme d'une colonne.
    Bonjour,

    J'ai une application flex qui se charge d'afficher un datagrid. Le dataprovider du datagrid est un arrayCollection qui provient d'un webservice. Il contient un champ duration qui affiche une plage horaire ( 0s-59s , 12h-24h,1j-2j etc) ainsi qu'un champ number qui contient un nombre. Mon datagrid affiche bien ces deux colonnes. J'aimerais en afficher une troisième avec un pourcentage mais je n'arrive pas à calculer la somme de la colonne nombre pour ensuite l'afficher dans la troisième colonne.

    je vous montre un petit bout de mon code qui j'espère va vous éclaircir.


    Voici mon dataGrid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <mx:DataGrid dataProvider ="{myData}" id="sessionDurationIntra_datagrid"
    						rowCount="{myData.length>10?10:myData.length}" width="400">
    					<mx:columns>				
    						<mx:DataGridColumn dataField="duration"
    						  	headerText="{resourceManager.getString('i18n', 'sessionDurationIntra_titre')}"/>
    						<mx:DataGridColumn dataField="number"
    						  	headerText="{resourceManager.getString('i18n', 'sessionDurationIntra_number')}"/>
    						  <mx:DataGridColumn id="percentage" dataField="number" labelFunction="calculatePercentage"
    						  	headerText="{resourceManager.getString('i18n', 'sessionDurationIntra_percent')}"/>
     
    					</mx:columns>
    et voilà comment est instancié le myData :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private function sessionDurationIntraHandler(event:GetSessionDurationListResultEvent):void{
    	        	myData = ArrayCollection(event.result);
     
    	        }
    J'ai essayé quelques "trucs" avec le labelFunction mais sans succès. Je suis un peu perdu.

    quelqu'un a-t-il une idée ?

    Cordialement,

    kiwiii.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    Je comprends pas bien ton besoin. Comment calcules-tu un pourcentage avec juste un nombre ?

    J'imagine que ta solution se situe du coté des ItemRenderer...

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 14
    Par défaut
    Bonjour,

    J'ai une colonne "nombre" qui affiche un nombre de session et une colonne "durée des sessions" qui affiche des plages horaires.

    par exemple :


    de 0s à 59s => 397
    de 1m à 30m => 949
    de 30m à 1h => 943 ...

    j'aimerais calculer la somme de tous les nombres, par exemple ici 397+949+943 = 2289. ça donnerais en suite un pourcentage

    pour la plage 0s-59s => 397 => 17.28% ((397*100)/2298).

    J'espère avoir été plus clair.
    Je vais regarder du coté des items Renderer.

    Bonne journée.

    Cordialement,

    kiwiii

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Je ne crois pas nécessaire d'utiliser un itemrenderer pour cela.

    Le plus simple est d'utiliser une labelFunction pour la colonne pourcentage.

    Dans le labelFunction tu fais ton calcul et tu renvois ton pourcentage. Je ne vois pas bien où est la difficulté...

    1- tu parcours ta source de données pour faire la somme des "number"
    2- tu divises la valeur du number de ta ligne par cette somme
    3- tu renvois ce pourcentage en retour

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut
    Ok j'avais pas compris ce que tu voulais faire.
    Donc effectivement pas besoin d'itemRenderer, la solution de Jylaxx doit être ok.

    Par contre, fais ta somme totale en amont histoire d'éviter de reparcourir tout le dataprovider à chaque ligne pour recalculer le même chiffre à chaque fois.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Par contre, fais ta somme totale en amont histoire d'éviter de reparcourir tout le dataprovider à chaque ligne pour recalculer le même chiffre à chaque fois.
    ça se discute
    S'il est facile de détecter les événements déclenchant la nécessité d'actualiser cette somme, c'est une optimisation assez simple.
    Dans le cas contraire la question est de savoir si cette optimisation est nécessaire. Je n'ai pas l'impression que le nombre de lignes soit très important...

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

Discussions similaires

  1. Somme d'une colonne d'un datagrid
    Par dominux80 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/07/2008, 08h50
  2. Réponses: 10
    Dernier message: 03/10/2006, 20h19
  3. [CF][PPC/VB.NET/Datagrid] Comment gérer une colonne CheckBox ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 28/08/2006, 17h08
  4. comment calculer la somme d'une colonne d'un dbgrid
    Par kirty dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/07/2006, 20h55
  5. Réponses: 3
    Dernier message: 16/05/2006, 14h47

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