访问DataGridColumn项呈示器变量

时间:2009-09-01 15:43:51

标签: flex actionscript-3

在DataGrid中,我有一个DataGridColumn,它使用自定义组件作为项呈示器。在组件中,我有一个存储一组值对象的ArrayCollection。我的问题是我无法从项呈示器组件外部访问ArrayCollection值。有谁知道怎么可能这样做?我在下面发布了一段代码片段。

<mx:Script>
    <![CDATA[
        // Cannot access arrFiles from here.
    ]]>
</mx:Script>
<mx:DataGrid editable="true">
    <mx:columns>
        <mx:DataGridColumn id="dgcUpload" width="130" headerText="Uploaded Files"
        editable="false">
        <mx:itemRenderer>
        <mx:Component>
                    <mx:VBox>
                        <mx:Script>
                            <![CDATA[
                                [Bindable]public var arrFiles:ArrayCollection = new ArrayCollection();
                            ]]>
                        </mx:Script>
                    </mx:VBox>
        </mx:Component>
        </mx:itemRenderer>
        </mx:DataGridColumn>
    </mx:columns>
</mx:DataGrid>

这可能吗?

提前感谢您的任何帮助,

奥维尔

2 个答案:

答案 0 :(得分:1)

可能取决于您想要如何访问它。您可以通过调用datagrid上的itemToItemRenderer函数来访问itemRenderer呈现的特定项的属性。这为您提供了该特定itemRenderer的实例,您可以为该项调用arrFiles变量。

这是一个例子

        protected function datagrid1_clickHandler(event:MouseEvent):void
        {
            var obj:Object = dgcUpload.itemToItemRenderer(dgcUpload.selectedItem);
            var newArray:ArrayCollection = obj.arrFiles;
        }

我在DataGrid上点击某些内容并且我想访问所选项目的arrFiles变量时调用它。

这就是你要找的东西吗?

=瑞恩

答案 1 :(得分:1)

我会创建一个自定义MXML Box组件作为带有标签(myLabel)作为子项的渲染。将DataGrid的数据提供程序设置为数组。在自定义MXML组件中,覆盖每次为每行渲染数据时调用的set data方法,并将标签设置为传入的当前值:

override public function set data(value:Object):void{
         myLabel.text = value.myTextForLabel;
}

如果ArrayCollection(myArrayCollection)中的字段对于标签始终是相同的,那么只需将DataGrid数据提供程序设置为ArrayCollection并将列的dataField属性设置为适当的值(myText):

<mx:DataGrid editable="true" dataProvider="myArrayCollection">
   <mx:columns>
    <mx:DataGridColumn id="dgcUpload" width="130" dataField="myText" headerText="Uploaded Files"
    editable="false">
   </mx:columns>
</mx:DataGrid>