Xml ArrayCollection循环查找匹配项
我希望有人能帮助我 我正在尝试为问卷模块构建一个动态表单。在之前的一些帖子的基础上,我使用了与讨论中类似的过程“我已经成功地证明了扩展XML以包括日历、组合框等的事实 我的问题是,现在需要从ArrayCollection而不是xml文件获取数据。我希望通过AC循环,其中type=“text”呈现文本输入字段,其中a type=“calendar”呈现日历等 到目前为止,我的代码只是查看一个textinput字段(对于包含的所有注释,我深表歉意;)是:-Xml ArrayCollection循环查找匹配项,xml,apache-flex,foreach,arraycollection,Xml,Apache Flex,Foreach,Arraycollection,我希望有人能帮助我 我正在尝试为问卷模块构建一个动态表单。在之前的一些帖子的基础上,我使用了与讨论中类似的过程“我已经成功地证明了扩展XML以包括日历、组合框等的事实 我的问题是,现在需要从ArrayCollection而不是xml文件获取数据。我希望通过AC循环,其中type=“text”呈现文本输入字段,其中a type=“calendar”呈现日历等 到目前为止,我的代码只是查看一个textinput字段(对于包含的所有注释,我深表歉意;)是:- [Bindable] 公共变量AC:Arr
[Bindable]
公共变量AC:ArrayCollection=新的ArrayCollection([
{类型:'text',方向:'horizontal',工具提示:'test tooltip',标签:'my textbox label',id:'1'},
{类型:'text',方向:'horizontal',工具提示:'other tooltip',标签:'other label',id:'2'}
]);
私有函数init():void
{
变量形式:形式=新形式();
对于每个(变量元素:AC中的字符串)
{
开关(元素。@type.toString()
{
案例“文本”:
变量fi:FormItem=新FormItem();
//fi.toolTip=elements.toolTip.toString();
//fi.required=getglobalprofile.required.toString();
//fi.direction=getglobalprofileb[i]。@direction;
变量li:Label=新标签();
//li.text=getglobalprofileb[i]。@label;
//li.宽度=100;
var ti:TextInput=新的TextInput();
ti.text=“测试”;
ti.宽度=200;
表格.addChild(fi);
fi.addChild(li);
fi.addChild(ti);
//中断;
}
}
本.addChild(表格);
}
]]>
如果您对工作xml版本(仅呈现)感兴趣,请告诉我,我也会发布此信息我已经找到了问题第一部分的答案,即使用RO调用通过向DB发出简单请求来呈现表单 下一个问题是,当我不“知道”字段ID、字段的数量或字段的类型时,如何保存表单 又是一篇帖子 希望这对某人有用
[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);
// form.id = 'demographics';
}
我不太明白你的问题。foreach循环有问题吗?什么具体不起作用?是的,它是每个循环的对应项。我希望在AC中找到'type'=“text”列并执行一些操作,然后查找'type'=“calendar”列并执行一些不同的操作等。
[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);
// form.id = 'demographics';
}