多维Arraylist和DropdownLists

时间:2012-06-26 20:41:26

标签: flex actionscript multidimensional-array

我的问题是,如何将此Multi Dim数组收集并将2级应用于下拉列表,

 var someArray:ArrayCollection = new ArrayCollection( [
        { label: "Level 1 p1", data: 
         { label: "Level 2", data: "some stuff" }
        },
        { label: "Level 1 p2", data: 
         { label: "Level 2", data: "some stuff" }
        }
    ] );

<s:DropDownList includeIn="items" id="classSelect" dataProvider="{someArray[0].data}" selectedIndex="0" labelField="label" x="405" y="150"/>

someArray [0] .data - 例如将其指向条目1,数据级别的内容又是一个arrayList,我在这里理解指针是如何工作不正确的?

1 个答案:

答案 0 :(得分:2)

我不确定你的意思

  

将级别2应用于下拉列表

如果要在下拉列表中显示2级文本,可以使用itemRenderer或labelFunction向下钻取到对象中以返回文本。概念上是这样的:

protected function getLevel2(item:Object):String{
  return item.data.label;
}

<s:DropDownList dataProvider="{someArray}" labelFunction="getLevel2" />

如果希望dataProvider只包含嵌套对象,则必须遍历someArray值并创建仅包含2级对象的新集合。从概念上讲是这样的:

var newDataProvider :ArrayCollection = new AryCollection();
for each (item in someArray){
 newDataProvider.addItem(item.data);
}

我还要补充一点,作为澄清一点,您的dataProvider的当前设置很可能会提供错误,因为您的'data'是一个实现IList接口的通用对象。

<s:DropDownList dataProvider="{someArray[0].data}" />

如果确实有效,那么你最终会得到一个只有一个项目的dataProvider。