我如何在flex中的组合框中设置项目的索引?

时间:2012-04-17 16:12:14

标签: actionscript-3 flex air flash-builder

我想设置数组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:提供的索引超出范围。

1 个答案:

答案 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;
    }
}

由于langListBindable,因此组合框将自动更新。