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 :

Passer une colonne d'un DataGrid comme paramètre d'une fonction


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut Passer une colonne d'un DataGrid comme paramètre d'une fonction
    Salut tout le monde,

    Je cherche une méthode qui peut rendre une colonne de mon dataGrid paramètrable au sein d'une fonction.
    Pour être plus précis je dispose de la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public function formStringFromDataGridColumns(dataGrid:DataGrid):String{
            var chaine:String="";
            	
            for(var i:Number=0; i < dataGrid.dataProvider.length; i++) {
               chaine += dataGrid.dataProvider[i].maColonne;
               if (i != dataGrid.dataProvider.length - 1)
                   chaine += "@";
            }
    			
            return chaine;
    }
    ma colonne est celle colorée en rouge...
    Une fois le paramètrage est réussie je me demande aussi comment faire appel à cette fonction avec le nouveau paramètre ajouté.

    Je vous remercie d'avance de vos propositions.

    Cordialement.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Je ne comprend exactement ce que tu veux avec cette fonction fournie à ton dataprovider mais je te recommande le labelFunction disponible sur la DataGridColumn.

    ++

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    Ce que je veux de cette fonction est de former une chaine avec la concaténation des valeurs d'une colonne précise dans mon dataGrid séparées par le caractère "@".

    Exemple:
    J'ai une colonne qui dispose des valeurs suivantes: Tom et David
    Cette fonction me permettera de récuperer une chaine sous la forme: "Tom@David"

    J'ai essayé d'utiliser labelFunction mais je ne vois pas comment l'intègrer dans ma fonction

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Le labelFunction attend une fonction dont la signature est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    labelFunction(item:Object, column:DataGridColumn):String
    Avec item représentant l'objet pour une ligne, je suppose que c'est dans cet objet que tu as tes noms David et Tom ? Sinon merci de préciser le modèle de données fournit à ton dataProvider sinon on ne pourra pas vraiment t'aider.

    ++

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    Voici comment mon dataGrid est représenté sous Flex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <mx:DataGrid x="188.5" y="10" width="465" height="166" id="dataGridSignatairesExternes" dataProvider="{vo.listSignataireExterne}"> 
    	<mx:columns>
    		<mx:DataGridColumn headerText="Statut" dataField="clnStatutSignataires"/>
    		<mx:DataGridColumn headerText="Nom" dataField="clnNomSignataire"/>
    	</mx:columns>
    </mx:DataGrid>
    Quand je le rempli dynamiquement il devient par exemple sous la forme:

    -----------------------
    || Statut || Nom ||
    -----------------------
    || Directeur || Tom ||
    || Assistant || David ||
    ----------------------

    L'objectif de ma fonction est d'obtenir "Tom@David" de la colonne Nom ainsi que "Directeur@Assistant" de la colonne Statut. Ce travail etant fait pour ce dataGrid, il doit être repeté sur deux autres, c'est pour ça que j'ai besoin de paramètrer ma fonction sinon je dois faire le même travail pour toutes les colonnes de mes dataGrids.

    J'espère que c'est bien expliqué, je vous remercie encore de votre aide.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    c'est résolu, voici la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function formStringFromDataGridColumns(dataGrid:DataGrid,colonne:String):String{
          var chaine:String="";
     
          for(var i:Number=0; i < dataGrid.dataProvider.length; i++) {
               chaine += dataGrid.dataProvider[i][colonne];
               if (i != dataGrid.dataProvider.length - 1)
                    chaine += "@";
    	}
     
           return chaine;
    }

  7. #7
    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
    Si j'ai bien compris tu concatènes toutes les lignes de ta source de données pour chaque colonne.
    Dans ce cas tu n'as donc qu'une seule ligne par grille, correct ?

    En ce qui concerne la fonction paramétrable tu peux faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function concatRowsByProperty( data : ArrayCollection, property : String ) : String
    {
    	var ret : String = null ;
     
    	for each ( var item : Object in data ) 
    	{
       		if ( ret )
       			ret += "@" + item[property] ;
       		else	
       			ret = item[property] ;
        }
    	return ret ;
    }
    Il faut que la source de données de ta DataGrid soit construit à partir du résultat de cette fonction.

    Comme tu n'indiques pas la structure de vo.listSignataireExt je ne sais pas si tu l'as pris en compte.
    Autrement dit il ne faut pas que le data utilisé dans la fonction ci-dessus soit le dataProvider du dataGrid.

    EDIT : Bon ben je n'ai pas été assez rapide...

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

Discussions similaires

  1. Passer le contenu d'un TDJBCInput comme paramètre dans une routine
    Par ngatchou dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 09/02/2015, 14h36
  2. [2008R2] Passer la colonne d'un tableau comme paramètre à un dataset
    Par omar.oukili dans le forum SSRS
    Réponses: 1
    Dernier message: 05/08/2013, 10h40
  3. Réponses: 6
    Dernier message: 24/05/2013, 16h25
  4. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  5. Passer une matrice comme paramètre d'une fonction
    Par Rniamo dans le forum Langage
    Réponses: 8
    Dernier message: 16/07/2006, 20h55

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