Aide - Recherche - Membres - Calendrier
Version complète : Remplir un comboBox
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
Moustik78
Hello.

Je voulais savoir, car je ne sais si cela est possible en Flex, s'il y avait un moyen d'affecter au labelField d'un comboBox deux propriétés d'un objet. Je m'explique :

Je dispose d'un Array

CODE
var controls : Array = new Array();


Ce tableau est rempli d'objets Right. La classe Right dispose de deux propriétés :

CODE
public class Right extends EventDispatcher
{
        public var id : String;
    public var permitted : Boolean;
}



Jusque là, tout va bien...

Je voudrais afficher le contenu du tableau controls dans un comboBox :

CODE
<mx:ComboBox id="myControls" />


Je procède donc de la manière suivante :

CODE
myControls.dataProvider = controls;


Le comboBox se remplit bien. Maintenant, l'affichage. Je peux jouer avec le LabelField pour afficher soit la propriété "id", soit "permitted" :

CODE
myControls.labelField = ?;


Ce que je voudrais moi, c'est afficher les deux (un truc genre "id || permitted" ). Est-il possible d'attribuer un labelField combiné de deux propriétés sur un comboBox?

Je peux toujours rajouter une propriété qui combine l'id et permitted dans ma classe, mais si je peux éviter d'y toucher...

Merci de vos réponses, et que la force du cactus soit avec vous smile.gif
Fusion
CODE
myControls.labelField = id+ " || "+permitted;
Moustik78
Hello Fusion (je vois que tu es toujours là pour m'aider, c'est cool smile.gif )

J'ai essayé la ligne de code que tu m'as donnée, mais cela ne marche pas, le comboBox se comporte comme si je ne précisais aucun labelField. :/
Fusion
Et voilà !!

CODE
<?xml version="1.0"?>
<mx:Application xmlns:MyEffects="myEffects.*" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="start()">


    <mx:Script>
        <![CDATA[

        
            public var controls : Array = new Array();

            public function start():void
            {
                var r1:Right = new Right();
                
                r1.id="r1";
                r1.permitted=false;
                
                var r2:Right = new Right();
                
                r2.id="r2";
                r2.permitted=true;                
                
                controls.push(r1);
                controls.push(r2);
                myControls.dataProvider = controls;
                myControls.labelFunction = function(item:Object):String{return item.id + " || " + item.permitted;}
            }
            
            
        ]]>
    </mx:Script>


<mx:ComboBox id="myControls" />

</mx:Application>
Tonic
Salut,

une solution :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >    
    <mx:Script>
        <![CDATA[
            
            [Bindable]
            private var ar : Array = new Array(
                new Right(),
                new Right(),
                new Right(),
                new Right()
            );
        ]]>
    </mx:Script>
    <mx:ComboBox dataProvider="{ar}" labelField="concat"></mx:ComboBox>
</mx:Application>

package
{
    import flash.events.EventDispatcher;
    
    public class Right extends EventDispatcher
    {
            public var id : String;
            public var permitted : Boolean;
            public var concat : String;
            
            public function Right(_id:String="1",_permitted:Boolean=true)
            {
                id=_id;
                permitted=_permitted;
                concat = id+permitted.toString();
            }
    }
}
Fusion
Oups je me suis gourré de post...
Moustik78
Fusion, Tonic, y a pas à dire, vous êtes les meilleurs icon_biggrin.gif

Markiiiiiiiii ! icon_mrgreen.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.