0

我的问题是,我该如何获取这个 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,我对指针如何工作的理解不正确吗?

4

1 回答 1

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 设置很可能会提供错误,因为您的“数据”是实现IList接口的通用对象。

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

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

于 2012-06-26T21:26:49.093 回答