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 :

Ligne rouge dans une datagrid


Sujet :

Flex

  1. #1
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut Ligne rouge dans une datagrid
    Bonjour à tous,

    Mon problème est simple à expliquer (s'il seulement il pouvait en être de même pour la solution ) :

    - J'ai une datagrid remplie.
    - Si le champ 2 d'une ligne est négatif, toute la ligne doit être écrite en rouge. (pas le background de la ligne)

    Des fois un bout de code est plus visuel. J'aimerais pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private function initDataGrid():void
    {
        for(var i:int=0;i<dg.rowCount;i++)
            if(dg.row[i][1] < 0)
                dg.row[i].setStyle('color',0xFFF000);
    }
    Evidemment cela ne fonctionne pas, je dois donc trouver une autre solution !
    Quelqu'un aurait une idée ? Merci pour votre aide

  2. #2
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut
    Je suis en train d'explorer une nouvelle piste au moyen d'un ItemRenderer.
    En voici son code :

    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
     
    package com
    {
    	import mx.controls.Label;
            import mx.controls.dataGridClasses.*;
     
    	public class LabelPerso extends Label
    	{		
    		override public function set data(value:Object):void
    	 	{
    		  	if(value != null)
    		  	{
    		  		super.data = value;
    		  		if(value == null) setStyle("color", 0xFF0000);
    		  		else setStyle("color", 0x000000);
    		  	}
         	        }
    	}
    }
    Le problème c'est que ma DataGrid étant dynamique, je la rempli en ActionScript et donc j'ai un peu de mal à attribuer un itemRenderer.
    Pour l'instant je m'y prend comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listeGrid.columns[1].itemRenderer = LabelPerso;
    Aucun problème à la compilation, mais à l'exécution, une erreur se produit :
    Echec de la contrainte de type*: conversion de com::LabelPerso$ en mx.core.IFactory impossible.

    Quelqu'un voit ce qui cloche ?
    Merci pour vos réponses.

  3. #3
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeGrid.columns[1].itemRenderer = LabelPerso
    c'est plutot ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeGrid.columns[1].itemRenderer = new ClassFactory (LabelPerso)
    bon courage

  4. #4
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut
    Ha merci samy, ca ne provoque plus d'erreur maintenant

    Bon maintenant il faut que je me penche sur pourquoi la couleur ne change pas malgré tout !

    Je me pose donc une question : Pour bien faire il faudrait attribuer l'itemrenderer avant de remplir le DataGrid ou après (comme je fais pour l'instant parce que j'ai fait n'importe quoi ) ?

  5. #5
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Ton itemRenderer tu l'instancie au moment de la creation de tes columns, après normalement tous ca passe bien

    j'ai l'impression que c'est ca qui t'induit en erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(value != null)
    {
        super.data = value;
        if(value == null) setStyle("color", 0xFF0000);
        else setStyle("color", 0x000000);
    }
    as tu vérifier si value est bien remplie ou pas, mis des traces et regarde, un autre truc même si ton value est bien remplie je pense que tu aura toute tes ligne en rouge (je pense que c'est pas le résultat attentu non plus )

    value = véhicule un objet qui est dans le dataProvider du DataGrid

    essaye de le caster à l'objet que tu utilise et essaye de faire des testes sur les attribut et non pas l'objet en lui meme

    j'espere que ca va t'aider

    Bon courage

  6. #6
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut
    Tadammm !!

    Pour aider ceux qui auront le même problème, je vais tâcher d'expliquer ce qui n'allait pas.
    Il fallait rajouter trois caractères à la définition de classe de mon ItemRenderer (voir plus haut) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(value == "") setStyle("color", 0xFF0000);
    devient :
    if(value[1] == "") setStyle("color", 0xFF0000);
    Explication :
    Ma ligne n'était pas entièrement vide donc c'était sur une cellule particulière que je voulais faire le test.
    Pour atteindre la cellule de son choix, on fait : value[nom du DataField]
    --> si on a pas défini de nom de datafield, il y en a un par défaut attribué d'office dont la numérotation commence à 0.

    J'espère que ca aidera ceux qui en ont besoin
    Bonne fin de journée

    EDIT : merci samy je viens de voir ton post

  7. #7
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Merci de penser au tag Résolu en bas de discussion si ton problème est réglé

    cette fois ci je le met pour toi

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

Discussions similaires

  1. Tracer une ligne rouge dans une image
    Par azertyuio dans le forum Images
    Réponses: 1
    Dernier message: 27/09/2011, 14h39
  2. ajout de nouvelle lignes dans une DATAGRID
    Par yayasam dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 23/04/2010, 18h36
  3. Réponses: 6
    Dernier message: 09/06/2009, 14h13
  4. Ajouter une ligne vide dans un datagrid
    Par aallal dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 15/10/2008, 12h30
  5. Ajout de ligne dans une datagrid ou gridview
    Par thierry007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/11/2007, 09h23

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