【发布时间】:2011-12-16 00:02:04
【问题描述】:
我需要在我的 Flex 应用程序的 DataGrid 列中显示 DropDownLists。这是我正在做的事情:
首先,我有一个项目渲染器函数,它创建一个自定义项目渲染器,并向它传递一个 IList 属性,该属性将用作 dropDownList 的 dataProvider:
private function rendererFunction(item:Object):ClassFactory {
var itemRenderer:ClassFactory = new ClassFactory(AudActionDropDownIR);
itemRenderer.properties = {AudActionData: AudActionData};
return itemRenderer;
}
这是自定义项渲染器类的代码:
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.IList;
[Bindable]
public var TheData:ArrayCollection = new ArrayCollection();
public var AudActionData:IList;
public function init():void
{
TheData = new ArrayCollection(AudActionData.toArray());
TheData.filterFunction = filterTheData;
TheData.refresh();
}
private function filterTheData(item:Object):Boolean {
return item.AUD_STEP_TYPE_ID == data.AUD_STEP_TYPE_ID;
}
]]>
</fx:Script>
<s:DropDownList id="theList"
labelField="AUD_ACTION_DESCR"
requireSelection="true"
selectedIndex="0"
dataProvider="{TheData}"
width="100%"/>
传递给渲染器 (AudActionData) 的 IList 被转换为过滤后的 ArrayCollection,该 ArrayCollection 将用作下拉列表的 dataProvider。
我有几个问题。
首先,创建渲染器时如何调用init函数? 其次,当我设置了列的 itemRendererFunction="rendererFunction" 时,应用程序不会启动,出现白屏。但是当我设置 itemRenderer="components.AudActionDropDownIR" 时,应用会启动,但下拉列表中当然没有数据。
有什么想法吗?谢谢!
【问题讨论】:
标签: apache-flex datagrid drop-down-menu itemrenderer dataprovider