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 :

affectation d'une fonction à une variable


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut affectation d'une fonction à une variable
    Bonjour, je voudrais affecté une fonction créée dans une application flex à un item renderer créé par un actionscript.

    Le but, c'est de supprimer la ligne du DataGrid par click sur le bouton item renderer.

    item renderer
    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
    23
    24
     
    package Components
    {
    	import flash.events.*;	
    	import mx.controls.Button;
     
     
    	public class RendererButton extends Button
    	{
    		[Bindable]
    		public var handleDelete:Function;//mon soucis se trouve là
     
    		public function RendererButton()
    		 {
    		 	label = "Delete";
    		 	id = "btDeleteDate";
    		 }
    		 //Suppression Date
    		override protected function clickHandler(event:MouseEvent):void
            {
    			handleDelete.apply(null, [data]);
            }
    	}
    }
    application flex
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="onLoad()" xmlns:local="*"
    	visible="{contractService.findAllContractType.lastResult != null}">
     
    	<mx:Script>
    		<![CDATA[
    ...
    ...
     
    			//Delete line
                            [Bindable]
    			public function handleDelete(event:Event):void{
    				var i:int = aDG.selectedIndex;
    				if (event.target.id == "btDeleteDate"){	
    					if (aDG.selectedIndex != -1){
    					delete(contract.validityPeriods[i]);
    					}			
    					this.dispatchEvent(new Event("updateContract"))					
    				}
    			}
     
    		]]>
    	</mx:Script>
    ...
    ...
     
    mx:DataGrid id="aDG" width="100%" height="100%" dataProvider="{contract.validityPeriods}" change="addToCurrent(event)">
    							<mx:columns>
    								<mx:DataGridColumn dataField="startDate" headerText="StartDate" editable="true"/>
                    				<mx:DataGridColumn dataField="endDate" headerText="EndDate" editable="true"/>
                    				<mx:DataGridColumn dataField="stateFlag" headerText="StateFlag" editable="true"/>
                    				<mx:DataGridColumn headerText="Control" itemRenderer="Components.RendererButton"/>
    							</mx:columns>
    						</mx:DataGrid> 
    ...
    ...
     
    </mx:Application>

    ERREUR RENCONTREE

    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    at Components::RendererButton/clickHandler()[/Users/oracle/Workspaces/MyEclipse 7.0/tutoWebService/src/Components/RendererButton.as:20]
    Comment affecter la fonction handleDelete(event:Event) à ma variable dans mon actionscript??

    Pour être plus clair, l'idée c'est de faire un binding de la fonction sur le composant ActionScript créé.

    Merci pour vos suggestions

  2. #2
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Après avoir épluché le livedocs de Flex. j'ai qu'il fallait instancier le itemRenderer créé dans l'application principale avant de l'utiliser, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var button:ClassFactory = new ClassFactory (Components.RendererButton);
    myGrid.itemRenderer = button;
    Maintenant comment faire le binding de tout ça avec ma fonction et ma fameuse variable, je cherche depuis des heures

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Oufff, je reviens de très très loin mais rien de vraiment exceptionnel. Je vous expliques mon périple qui ne tient qu'à 2 lignes seulement.
    En fait, fallait faire le binding de ma function avec ma variable depuis le chargement de l'application de l'application.
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="onLoad()" xmlns:local="*"
    	visible="{contractService.findAllContractType.lastResult != null}">
    ...
    ...
    </mx:Application>
    et ensuite dans la fonction onLoad()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Load all contract
    private function onLoad():void {
    ...
    ...
    //Appel de mon itemRenderer
    var buttonRenderer:ClassFactory = col.itemRenderer as ClassFactory;
    //Binding de ma fonction avec ma varible
                        variable        :    Function
    buttonRenderer.properties = {handleDelete : handleDelete};	
    }
    Voilà

    Merci à tous et bonne journée et surtout ne baisser pas les bras dans vos codes

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

Discussions similaires

  1. appliquer une fonction à une fonction
    Par stracoma dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2015, 16h35
  2. Réponses: 1
    Dernier message: 16/03/2009, 09h22
  3. Affecter résultat d'une fonction à une variable ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/09/2006, 14h45
  4. passer en paramettre d'une fonction une fonction
    Par RoM3Ro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2006, 15h54
  5. Affecter résultat SQL d'une requête à une variable
    Par bozolozo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/01/2005, 17h37

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