带按钮的Spark列表

时间:2011-08-25 16:08:47

标签: flex actionscript-3

我有一个Spark列表,其中包含一个数据提供程序,该列表包含已填写的表单应用程序列表。向每个列表项(表单应用程序)添加按钮的最佳方法是什么?此按钮将命名为“打开”,并将导航到指定的表单应用程序。

提前感谢任何建议!

2 个答案:

答案 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的回答有两点不同:

  • 我使用内置的ItemClickEvent代替自定义事件&gt;减 编码
  • 我在ItemRenderer的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更改以显示表单应用程序。