Flash MXML:ItemRenderer将数据行转发到按钮单击事件

Flash MXML:ItemRenderer将数据行转发到按钮单击事件,flash,apache-flex,actionscript,mxml,Flash,Apache Flex,Actionscript,Mxml,我使用flex spark itemrenderer来可视化数据行。每一行还具有一个按钮,该按钮应根据它所在的行执行某些操作。为此,我需要在单击按钮时访问datarow。但是我不知道如何得到它 以下是itemrenderer的外观: <?xml version="1.0" encoding="utf-8"?> <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library

我使用flex spark itemrenderer来可视化数据行。每一行还具有一个按钮,该按钮应根据它所在的行执行某些操作。为此,我需要在单击按钮时访问datarow。但是我不知道如何得到它

以下是itemrenderer的外观:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/halo">
<fx:Script>
<![CDATA[
private function click(e:flash.events.Event):void
{
    //how do i get access to the data of the row here?
}
]]>
</fx:Script>

<s:HGroup>
 <s:Label text="{data.GameName}" width="300" />
 <s:Button label="Start" click="click(event)" />
</s:HGroup>

</s:ItemRenderer>

的属性将包含此itemRenderer当前显示的数据提供程序中的元素

您可以使用该属性在列表的数据提供程序中获取数据元素的索引

我认为您需要前两种方法中的一种,但由于“datarow”对我来说是含糊不清的,这里有一些其他想法可能会有所帮助

如果需要访问该行的实例;这与itemRenderer实例没有什么不同,因此您可以使用
this
关键字访问单击按钮的itemRenderer上的属性

如果需要知道列表中所有ItemRenders的上下文中itemRenderer的索引;这将更加困难。由于在滚动列表时重复使用ItemRenders,因此呈现器实例的数量与数据提供程序中的项目数量之间没有一对一的关系。我不知道你为什么需要它,所以我猜这不是你需要的

的属性将包含此itemRenderer当前显示的数据提供程序中的元素

您可以使用该属性在列表的数据提供程序中获取数据元素的索引

我认为您需要前两种方法中的一种,但由于“datarow”对我来说是含糊不清的,这里有一些其他想法可能会有所帮助

如果需要访问该行的实例;这与itemRenderer实例没有什么不同,因此您可以使用
this
关键字访问单击按钮的itemRenderer上的属性


如果需要知道列表中所有ItemRenders的上下文中itemRenderer的索引;这将更加困难。由于在滚动列表时重复使用ItemRenders,因此呈现器实例的数量与数据提供程序中的项目数量之间没有一对一的关系。我不知道你为什么需要它,所以我猜这不是你需要的

我在FDT中尝试了你的代码,它立即警告我使用click作为函数名,因为它是一个保留字。我不确定这是否是你的问题

使用mx而不是spark,我做到了:

        public function rackDataClick(event : ListEvent) : void
        {
            rackID.text = event.itemRenderer.data.rackBarcode;
            racks.barcode = event.itemRenderer.data.rackBarcode;
            racks.rackName = event.itemRenderer.data.rackName;
            racks.maxRow = event.itemRenderer.data.maxRow as Number;
            racks.maxCol = event.itemRenderer.data.maxCol as Number;
            racks.location = event.itemRenderer.data.location;
        }
。 .



我知道这并不完全是您想要的,但有时任何示例都会有助于搜索。

我在FDT中尝试了您的代码,它立即警告我使用单击作为函数名,因为它是一个保留字。我不确定这是否是你的问题

使用mx而不是spark,我做到了:

        public function rackDataClick(event : ListEvent) : void
        {
            rackID.text = event.itemRenderer.data.rackBarcode;
            racks.barcode = event.itemRenderer.data.rackBarcode;
            racks.rackName = event.itemRenderer.data.rackName;
            racks.maxRow = event.itemRenderer.data.maxRow as Number;
            racks.maxCol = event.itemRenderer.data.maxCol as Number;
            racks.location = event.itemRenderer.data.location;
        }
。 .


我知道这不完全是你想要的,但有时任何例子都会有助于搜索