在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>
这可能吗?
提前感谢您的任何帮助,
奥维尔
答案 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>