2010-06-17 7 views
1

Je travaille sur une fonction pour générer un formulaire à l'exécution dans Flex en fonction d'un appel à la base de données. L'appel à la base de données renvoie les types de champs, id, info-bulles etc. comme une collection de tableaux, ensuite la collection de tableaux est analysée afin de déterminer quel contrôle afficher en fonction du champ type dans le tableau - ce bit fonctionne bien.Comment enregistrer un formulaire dans la base de données sans connaître le type de champ ou son identifiant dans flex et coldfusion?

Cependant, je suis bloqué pour essayer de sauvegarder les champs de formulaire dans la base de données en utilisant un CFC.

mon code de rendu de formulaire est le suivant mais comment sauvegarder les valeurs entrées dans la base de données?

mon code de rendu ..

[Bindable] 
    public var getglobalprofileb:ArrayCollection; 

    public function init(event:ResultEvent):void { 
       getglobalprofileb = event.result as ArrayCollection; 

     var form:Form = new Form(); 

      for each(var elements:Object in getglobalprofileb) 

      { 
        switch(elements.type.toString()) 
          { 
           case "text": 

              var fi:FormItem = new FormItem(); 
              fi.toolTip = elements.tooltip.toString(); 
              fi.required = elements.required; 
              fi.direction = elements.direction; 

              var li:Label = new Label(); 
              li.text = elements.label; 
              li.width = 100; 

              var ti:TextInput = new TextInput(); 
              ti.text = elements.default_text.toString(); 
              ti.width = 200; 
              ti.id = elements.id; 

              form.addChild(fi); 
              fi.addChild(li); 
              fi.addChild(ti); 

               break; 
            case "int": 
            break; 


           case "textarea": 
              var fa:FormItem = new FormItem(); 
              fa.toolTip = elements.tooltip; 
              fa.required = elements.required; 
              fa.direction = elements.direction; 

              var la:Label = new Label(); 
              la.text = elements.label; 
              la.width = 100; 

              var ta:TextArea = new TextArea(); 
              ta.text = elements.default_text; 
              ta.id = elements.id; 
              ta.width = 200; 
              ta.height = 100; 

              form.addChild(fa); 
              fa.addChild(la); 
              fa.addChild(ta); 

               break; 
            case "int": 
            break; 


            case "DateField": 
              var fdf:FormItem = new FormItem(); 
              fdf.toolTip = elements.tooltip; 
              fdf.required = elements.required; 
              fdf.direction = elements.direction; 

              var ldf:Label = new Label(); 
              ldf.text = elements.label; 
              ldf.width = 100; 

              var tdf:DateField = new DateField(); 
              tdf.formatString="DD/MM/YYYY"; 
              tdf.width = 200; 
              tdf.id = elements.id; 

              form.addChild(fdf); 
              fdf.addChild(ldf); 
              fdf.addChild(tdf); 

               break; 
            case "int": 
            break; 


            case "combobox": 
              var fcb:FormItem = new FormItem(); 
              fcb.toolTip = elements.tooltip; 
              fcb.required = elements.required; 
              fcb.direction = elements.direction; 

              var lcb:Label = new Label(); 
              lcb.text = elements.label; 
              lcb.width = 100; 

              var tcb:combobox = new ComboBox(); 
              tcb.id = elements.id; 
              tcb.width = 200; 


              var datas:String = elements.Datas; 
              var arr:ArrayCollection = new ArrayCollection ( 
                  datas.split(",") 
                    ); 

              tcb.dataProvider = arr ; 

              form.addChild(fcb); 
              fcb.addChild(lcb); 
              fcb.addChild(tcb); 

              break; 
            case "int": 
            break; 

            case "HSlider": 
              var fhs:FormItem = new FormItem(); 
              fhs.toolTip = elements.tooltip; 
              fhs.required = elements.required; 
              fhs.direction = elements.direction; 

              var lhs:Label = new Label(); 
              lhs.text = elements.label; 
              lhs.width = 100; 

              var ths:HSlider = new HSlider(); 
              ths.tickInterval = 10; 
              ths.liveDragging = true; 
              ths.snapInterval = 1; 
              ths.width = 200; 
              ths.id = elements.id; 

              form.addChild(fhs); 
              fhs.addChild(lhs); 
              fhs.addChild(ths); 

              break; 
            case "int": 
            break; 


           case "CheckBox": 
              var fchb:FormItem = new FormItem(); 
              fchb.toolTip = elements.tooltip; 
              fchb.required = elements.required; 
              fchb.direction = elements.direction; 

              var lchb:Label = new Label(); 
              lchb.text = elements.label; 
              lchb.width = 100; 

              var tchb:CheckBox = new CheckBox(); 
              tchb.id = elements.id; 

              form.addChild(fchb); 
              fchb.addChild(lchb); 
              fchb.addChild(tchb); 

              break; 
            case "int": 
            break; 


            case "NumericStepper": 
              var fns:FormItem = new FormItem(); 
              fns.toolTip = elements.tooltip; 
              fns.required = elements.required; 
              fns.direction = elements.direction; 

              var lns:Label = new Label(); 
              lns.text = elements.label; 
              lns.width = 100; 

              var tns:NumericStepper = new NumericStepper(); 
              tns.id = elements.id; 

              form.addChild(fns); 
              fns.addChild(lns); 
              fns.addChild(tns); 

              break; 
            case "int": 
            break; 


           case "Richtext": 
              var frte:FormItem = new FormItem(); 
              frte.toolTip = elements.tooltip; 
              frte.required = elements.required; 
              frte.direction = elements.direction; 

              var lrte:Label = new Label(); 
              lrte.text = elements.label; 
              lrte.width = 100; 

              var trte:RichTextEditor = new RichTextEditor(); 
              trte.width = 400; 
              trte.id = elements.id; 


              form.addChild(frte); 
              frte.addChild(lrte); 
              frte.addChild(trte); 

              break; 
            case "int": 
            break; 




          } 
        }  

        this.addChild(form); 



       } 

Répondre

0

Envoyez les données à CF de la même façon Flex reçoivent.

Créer une instance d'un objet générique, y ajouter vos propriétés; Je devine id, default_text, label, direction, requis, tooltip, etc ... Ajouter une propriété 'finalVAlue'. Dans CF, je crois qu'un objet par défaut devrait apparaître comme une structure; Bien que, si possible, je recommande fortement de créer un objet de valeur dans cF et Flex pour ces données et d'utiliser le mappage d'objets Flex Remoting CFC vers AS3.

Si vous devez accéder à tous les éléments de formulaire dans Flex que vous avez créés, sans connaître l'ID, vous pouvez effectuer une boucle sur tous les enfants en utilisant numChildren et getChildAt.


Mise à jour: Voici un échantillon de créer un objet générique et les propriétés ajoutant:

var newObject : Object = new Object(); 
newObject.property1 = 'some value'; 
newObject.property2 = 'some other value; 
newObject.finalValue = textInput.text; 
+0

Ace grâce - avez-vous un exemple rapide de créer l'objet générique et l'ajout de propriétés en particulier le réglage une 'valeur finale' - assez nouveau pour cela :) – charlie

+0

J'ai mis à jour ma réponse avec un exemple de code rapide. – JeffryHouser