0

我想设置数组集合中的项目顺序并与组合框绑定。

这是我的代码

[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:提供的索引超出范围。

4

1 回答 1

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

由于您的langListis Bindable,组合框将自动更新。

于 2012-04-17T16:19:23.363 回答