2012-07-16 36 views
0

我在Flex中爲DataGrid製作自定義ItemRenderer。我的問題是,我需要能夠使用listData,所以我可以找出ItemRenderer所在的當前行。我似乎無法正確實現IDropInListItemRenderer,因爲無論對於我而言,哪個listData都是空的。Flex使用ItemRenderer在自定義項目渲染器中實現IDropInListItemRenderer類

這是我在上面的代碼:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" autoDrawBackground="false" styleName="gRenderer" dataChange="setStates()" implements=" mx.controls.listClasses.IDropInListItemRenderer"> 

然後我有:

private var _listData:BaseListData; 

然後我有:

public function get listData():BaseListData { 
     return this._listData; 
    } 

    public function set listData(value:BaseListData):void { 
     this._listData = value; 
    } 

但後來在我的組數據的方法我試圖做到這一點:

override public function set data(value:Object):void { 
     super.data = value; 
     var row : int = listData.rowIndex; 
    } 

但是在運行時它會拋出一個錯誤,說它試圖訪問一個空對象的屬性。在我的調試器中,我可以看到listData爲空。我無法弄清楚爲什麼。從我在網上看到的東西看來,我正在做所有需要的事情。我錯過了什麼?

謝謝!

+1

您正在處理Spark DataGrid或MXDataGrid嗎?在MXDataGrid使用星火的ItemRenderer應該使用DataGridListData http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/mx/controls/dataGridClasses/MXDataGridItemRenderer.html#dataGridListData沒有的ListData。 – JeffryHouser 2012-07-16 15:24:15

回答

0

看起來您正在爲spark數據網格構建自定義ItemRenderer。如果是這樣,而不是使用基類s:ItemRenderer使用s:GridItemRenderer。有一個rowIndex的公共屬性,您可以參考。

override public function set data(value:Object):void { 
    super.data = value; 
    trace(rowIndex); 
} 
+0

是什麼讓你認爲原始的海報正在使用Spark DataGrid?我不知道他是否使用基於他的帖子的Spark或MX DataGrid。 – JeffryHouser 2012-07-16 15:42:19

+1

我看到他用火花命名空間(S: 「://ns.adobe.com/flex/spark庫」:ItemRenderer的XMLNS S =)在他的MXML。 – slukse 2012-07-16 17:04:17

+0

嗯,我可以並想使用GridItemRenderer,這是一個很好的建議。問題是,我已經這是我的檔案渲染: 有了這樣的問題,它告訴我「元素S:過渡是不允許這裏。」 – user1513171 2012-07-16 17:18:49

相關問題