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 :

[débutant] Méthode pour un formulaire dynamique


Sujet :

Flex

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 38
    Points
    38
    Par défaut [débutant] Méthode pour un formulaire dynamique
    Bonjour,

    J'ai un code de formulaire en flex qui fonctionne correctement. Si vous voyez des améliorations à apporter dites le.

    Cependant je ne sais pas comment rendre une partie du formulaire extensible. Je m'explique : J'ai un objet avec un nom, ... et des caractéristiques qui peuvent au nombre de 1 à n . Donc j'ai fait un canevas qui permet de rajouter des caractéristiques mais je ne sais pas comment faire l'ajout au niveau de l'as3 avec l'id et pour la transmission des renseignées avec amfphp.

    voici le code du composant de caractéristiques:

    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
     
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
     
    <mx:Script>
    <![CDATA[
     
    	import mx.core.UIComponent;
    	import mx.core.ComponentDescriptor;
     
    	public function delete_meta_state_box():void
    	{	
    		this.parent.removeChild(this);
    	}
     
    ]]>
    </mx:Script>
     
     <mx:Model id="_model_type">
      <states>
       <state label="Texte"/>
       <state label="Entier"/>
      </states>
    </mx:Model>
     
    <mx:FormHeading label="Caractéristique" />
    <mx:FormItem label="nom">
    	<mx:TextInput id="_form_name" text="" />
    </mx:FormItem>
    <mx:FormItem label="type">
    	<mx:List id="_type" rowCount="2" dataProvider="{_model_type.state}"  />
    </mx:FormItem>
    <mx:HBox width="100%" horizontalAlign="center">
    	<mx:Button label="Supprimer" click="delete_meta_state_box()" />
    </mx:HBox>
     
    </mx:Canvas>
    et le code du formulaire principale :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    	xmlns:meta_object="object.ihm.*"
    	>
     
    	<mx:RemoteObject
    		 id="asg" 
    		 source="forms.object.Object"
    		 destination="zend"
    		 fault="faultHandler(event)"
    		 showBusyCursor="true">
            	<mx:method
            		name="save"
            		result="form_object_object_save_result(event)"
            		fault="faultHandler(event)" />
            	<mx:method
            		name="get"
            		result="form_object_object_get_result(event)"
            		fault="faultHandler(event)" />
        </mx:RemoteObject>
     
        <mx:Form id="_object">
        	<mx:FormHeading label="Propriétés de l'entité" />
    	   	<mx:FormItem label="catégorie">
     			<mx:TextInput id="_form_categorie" text="" />
          	</mx:FormItem>
    	   	<mx:FormItem label="nom">
     			<mx:TextInput id="_form_name" text="" />
          	</mx:FormItem>
     
    		<mx:VBox>
    			<mx:VBox id="_meta_state_box" >				
    				<meta_object:object_meta_state />
    			</mx:VBox>
    			<mx:HBox>
    				<mx:Button label="Ajouter" click="add_meta_state_box()" />
    			</mx:HBox>
    		</mx:VBox>
     
    		<mx:HBox width="100%" horizontalAlign="center">
    			<mx:Button label="Supprimer" />
    			<mx:Spacer /> 					
    			<mx:Button label="Annuler" />
    			<mx:Spacer /> 					
    			<mx:Button label="Sauver" click="onValid(event)"/>
    		</mx:HBox>
     
       		<mx:Script>
            	<![CDATA[
     
    				import mx.core.UIComponent;
    				import mx.core.ComponentDescriptor;
       				import mx.controls.Alert;
       				import mx.rpc.events.FaultEvent;
       				import mx.rpc.events.ResultEvent;
       				import forms.object.ObjectData;
     
    				[Bindable]
    				protected var obj:ObjectData=new ObjectData();
     
    	            public function onValid(e:Event):void
        	        {
            	    	trace("Send object data to server");
    					// valider le nom
    					// si l'id n'est pas nulle affecter l'id
    					// Si la valildation n'est pas correct appeler une fonction de correction
     
    					// Valider le formulaire.
        	        	//asg.getOperation("save").send();
        	        	var ob:ObjectData=new ObjectData();
        	        	ob.setName(_form_name.text);
        	        	asg.getOperation("save").send(ob);
                	}
     
    	            public function form_object_object_save_result(e:ResultEvent):void
        	        {
        	        	trace(e.result);
            	    	trace("call . form_object_object_save_result");
                	}
     
    	            public function form_object_object_get_result(e:ResultEvent):void
        	        {
        	        	trace(e.result);
            	    	trace("call . form_object_object_get_result");
                	}
     
    	            public function faultHandler(fault:FaultEvent):void
        	        {
            	        Alert.show(fault.fault.faultString, fault.fault.faultCode.toString()+fault.fault.faultDetail.toString()+fault.fault.faultString);
                	}
     
    				public function add_meta_state_box():void
    				{	
    					var state:object_meta_state=new object_meta_state();
    					_meta_state_box.addChild(state);
    				}
     
        	    ]]>
    	    </mx:Script>
     
       </mx:Form>
     
    </mx:Canvas>
    Donc Je peux rajouter des caractéristiques en appuyant sur le bouton ajouter mais comment je récupère les valeurs des caractéristiques, comment je les distinguent et commment je les transmets ?

    Merci.

  2. #2
    Membre éclairé
    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
    Points : 894
    Points
    894
    Par défaut
    Salut,

    Tu récupères les données dans un tableau en faisant une boucle de lecture des "child" de ton meta_object.
    amfphp doit pouvoir transmettre un tableau.

    Sinon par convention (ce qui facilite beaucoup la lecture du code), les identifiants de classe doivent commencer par une majuscule +++
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Merci de ton aide. Cependant la méthode que tu proposes se base sur la structrure graphique du formulaire. Si j'ai envie de modifier la structure de présentation du formulaire cela risque de ne plus fonctionner. N'y aurait-il pas une solution autre qui se base sur les éléments de formulaire ?

  4. #4
    Membre éclairé
    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
    Points : 894
    Points
    894
    Par défaut
    Je n'ai pas de réponse immédiate d'autant que je n'utilises ni les RemoteObject ni PHP...
    Par contre je travaille depuis très longtemps sur la génération dynamique de questionnaire à parti d'un générateur mis à disposition de l'utilisateur final. J'ai commencé à porter ce travail sous Flex. Le transfert des données et son mode de persistance est bien entendu indépendant de la présentation du questionnaire.
    Tout ce que je peux dire c'est que je ne pense pas qu'il existe une solution magique pour répondre à ton problème. Si elle existe je suis intéressé...
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    J'ai également un problème semblable! Si quelqu'un à une soluce ou une piste, ce serait vraiment géniale de le poster ici.

    Le probleme ici est l'utilisation du MXML, je pense! La solution serait plutot de créer l'élément en Actionscript avec des paramètres ainsi on évite du coup les problemes liés à la génération de l'ID des éléments générés.

    Merci.

Discussions similaires

  1. [débutant]méthode pour récupérer une liste
    Par Msysteme dans le forum C#
    Réponses: 10
    Dernier message: 27/02/2009, 12h01
  2. Réponses: 12
    Dernier message: 03/03/2007, 00h52
  3. Quelle méthode utiliser pour un formulaire
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 16h42
  4. Réponses: 2
    Dernier message: 04/06/2006, 18h53
  5. Méthode pour un formulaire de mise à jour
    Par deviltaz dans le forum IHM
    Réponses: 12
    Dernier message: 07/10/2004, 11h01

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