2009-09-01 91 views
2

在DataGrid中,我有一個DataGridColumn,它使用自定義組件作爲項目渲染器。在組件中,我有一個存儲一組值對象的ArrayCollection。我的問題是我無法從項目渲染器組件外部訪問ArrayCollection值。有誰知道如何做到這一點?我已經發布了下面的代碼片段。訪問DataGridColumn項目渲染器變量

<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> 

這可能嗎?

預先感謝您的任何援助,

奧維

回答

1

我想創建一個自定義MXML框組件的呈現帶標籤(myLabel)作爲孩子。將DataGrid的數據提供者設置爲數組。在自定義MXML組件覆蓋該各數據被呈現爲每個行時間稱爲該組數據的方法和在標籤設置爲傳入的當前值:

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

如果ArrayCollection的(myArrayCollection)的字段是總是相同的標籤,然後只將DataGrid的數據提供者中的ArrayCollection和列的爲適當的值(會將myText)dataField屬性:

<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> 
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變量選擇的項目。

這是你在找什麼?

=瑞恩

+0

那種幫助瑞安。我試圖做的是迭代DataGrid並添加購物車數組中相應的行的每個文件陣列。 – user320691 2009-09-01 21:25:43

+2

這是你可以用數組Array作爲dataProvider做些什麼嗎? – ryanstewart 2009-09-02 05:04:45

+0

除非您在選擇事件中可以檢測到的內容發生變化,否則請使用原始數據提供者。像Ryan說的。 – Glenn 2009-09-02 09:47:22