Hi - I am working on a function to generate a form at runtime in Flex based on a call to the DB. The call to the DB returns the field types, id, tooltips etc as an arraycollection, the arraycollection is then parsed in order to ascertain what control to display based on the type field in the array - this bit works fine.
However, i am stuck on trying to save the form fields back to the database using a CFC.
my form rendering code is as follows but how do i save values entered back to the database?
my rendering code..
[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);
}