我有一個問題,一直在推動我瘋了。我在Flex中動態創建一個表使用下面的代碼:動態創建的Flex表單只能識別最後添加的複選框作爲複選框
private function init():void {
//Dynamically create form based on profiles
for each(var role:AclRoleDTO in _profiles) {
//Create form item
var fi:FormItem = new FormItem();
fi.label = role.name;
//Create checkbox
var cbx:CheckBox = new CheckBox();
cbx.id = "role_"+role.id.toString();
cbx.label = role.description;
cbx.width = 250;
cbx.selected = true;
//Add Checkbox for form item
fi.addChild(cbx);
profileForm.addChild(fi);
}
//Add save button
var fib:FormItem = new FormItem();
var btn:Button = new Button();
btn.name = "Save";
btn.label = "Save";
btn.id = "saveButton";
btn.addEventListener(MouseEvent.CLICK, onSubmitClicked);
fib.addChild(btn);
profileForm.addChild(fib);
}
能正常工作並與FormItems包括基於可用情景+的CheckBox創建一個窗體保存按鈕來保存這些文件。
但是,當用戶點擊Save按鈕保存配置文件,我用下面的方法來檢索選擇框,但功能只承認最後添加的CheckBox作爲複選框...
private function onSubmitClicked(event:MouseEvent):void {
var formElements:Array = profileForm.getChildren();
var roleIds:ArrayCollection = new ArrayCollection();
var i:int = 0;
var j:int = 0;
//Parse the entire form
for (i; i < formElements.length; i++) {
if (formElements[i] is FormItem) {
var formItem:FormItem = formElements[i];
var itemElements:Array = formItem.getChildren();
for (j;j<itemElements.length;j++) {
//If form item is a checkbox, check if the box is checked!
if (itemElements[j] is CheckBox) {
var tmpBox:CheckBox = itemElements[j];
if (tmpBox.selected) {
//random stuff
}
}
}
}
}
//Send event with roleIds!
//More random stuff
}
我已經嘗試了各種各樣的事情,以確保循環正常工作,它確實:它循環適當數量的FormItem元素並檢索適當數量的childrenElements。它只是不識別任何孩子作爲複選框,而不是循環通過添加的最後一個FormItem。如果我使用flash.utils.getQualifiedClassName(itemElements [j])來查找其他FormItem子項是什麼,它將返回一個空字符串。
我在做什麼錯?
謝謝,顯然這是做的伎倆,雖然我不明白爲什麼我不得不通過項目作爲UIComponent它的工作。 – Deratrius
這是使用MX Form的方法。 RIAStar的例子是Spark。 我建議閱讀Bill White的文章Core Flex 4 Elements vs Children。 http://www.billdwhite.com/wordpress/?p=296 UIComponent類是所有Flex可視組件的基類,因此您將formItemElement投射爲UIComponent。 –
@Deratrius這段代碼和你的代碼之間的唯一區別(就我所知)是'j'變量。你有一個雙循環,並且從不在外循環中將'j'設回'0'。FinFlex使用'for each'循環來解決問題。 – RIAstar