我想设置数组Collection中的items顺序并使用组合框绑定。
这是我的代码
[Bindable]private var langList:ArrayCollection = new ArrayCollection([{label:"Englis"},{label:"Urdu"},{label:"Arabic"},{label:"Spanish"}]);
protected function cbm_creationCompleteHandler(event:FlexEvent):void
{
for(var i:int =0; i< langList.length; i++)
{
if(langList[i].label == 'Urdu')
{
cbm.setChildIndex(cbm.getChildAt(i), 0);
break;
}
}
}
<s:ComboBox id="cbm" x="258" y="113" dataProvider="{langList}" creationComplete="cbm_creationCompleteHandler(event)"/>
当我尝试运行它时,编译器抛出以下异常
RangeError:错误#2006:提供的索引超出范围。
答案 0 :(得分:2)
注意,ComboBox::getChildAt
不会返回列表项,你不应该访问Flex组件的子项,这是皮肤问题。
如果你想改变元素的顺序,你必须在dataProvider中这样做,这是一个数据问题。
for(var i:int =0; i< langList.length; i++)
{
var item:Object = langList[i];
if(item.label == 'Urdu')
{
langList.removeItemAt(i);
langList.addItemAt(item, 0);
break;
}
}
由于langList
为Bindable
,因此组合框将自动更新。