我正在开发一个函数,在 Flex 中基于对数据库的调用在运行时生成表单。对 DB 的调用将字段类型、id、工具提示等作为数组集合返回,然后解析数组集合以确定要根据数组中的类型字段显示的控件 - 此位工作正常。
但是,我坚持尝试使用 CFC 将表单字段保存回数据库。
我的表单渲染代码如下,但是如何将输入的值保存回数据库?
我的渲染代码..
[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);
}