我有一个Spark列表,其中包含一个数据提供程序,该列表包含已填写的表单应用程序列表。向每个列表项(表单应用程序)添加按钮的最佳方法是什么?此按钮将命名为“打开”,并将导航到指定的表单应用程序。
提前感谢任何建议!
答案 0 :(得分:8)
这与@ www.Flextras.com所说的相似,所以我不打算重复。但是,我将添加一个示例和一两件事。
您的自定义ItemRenderer可能如下所示:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
private function requestForm():void {
var event:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK);
event.index = itemIndex;
event.item = data;
owner.dispatchEvent(event);
}
]]>
</fx:Script>
<s:Label id="labelDisplay" verticalCenter="0" />
<s:Button right="0" label="open" verticalCenter="0" click="requestForm()" />
</s:ItemRenderer>
与Flextras的回答有两点不同:
owner
上发送了该事件
实际上是包含此ItemRenderer的List。因为这,
你不需要泡泡事件。现在要在单击按钮时打开表单,请执行以下操作:
myList.addEventListener(ItemClickEvent.ITEM_CLICK, openForm);
private function openForm(event:ItemClickEvent):void {
trace("open " + event.item.toString());
}
答案 1 :(得分:2)
使用自定义itemRenderer显示带有itemRenderer数据(表单应用程序)的按钮。
点击按钮时;发送一个泡泡的自定义事件。您可能必须为此按钮单击表示的表单应用程序包含一些标识符。
使用addEventListener()方法监听列表类上的事件。您不能使用MXML,因为您将在List的默认元数据中使用未定义的自定义事件。
在您的侦听器中,执行相关的UI更改以显示表单应用程序。