2012-07-12 9 views
1

我在我的數據網格中使用了自定義項目渲染器,並且需要根據是否存在任何值的負值來使按鈕可見或不可見在渲染器中。所以我想在第一個渲染器關閉時將flag設置爲false,如果有任何負值,則將其設置爲true,並在最後檢查標誌的值。我知道每次在渲染器實例中更改數據時,我都可以派發一個dataChange事件,但是我想知道是否無論如何我可以知道它們何時完成? 謝謝!事件一旦所有的自定義項目渲染器已被創建/設置

回答

2

有沒有這樣的事件。

與任何其他Flex組件一樣,渲染器在創建後會派發CREATION_COMPLETEItemRenderers通常會被回收(同一個對象會被分配新的數據進行渲染),因此偵聽CREATION_COMPLETE是不夠的,除非您禁用回收。

對於Spark List組件,您可以通過在佈局類上設置useVirtualLayout=false來禁用回收。我不確定Spark DataGrid類是否支持此功能。 MX DataGrid可能有其他方法來執行此操作。

但是,禁用回收可能會影響性能。我認爲你的想法瓦特/ DATA_CHANGE事件是最好的解決辦法:

  • 確定數據的初始狀態(即:是否有任何負值)中渲染
  • ,使用DATA_CHANGE事件(或只是覆蓋渲染器的設置器data屬性)以瞭解數據何時發生變化
  • 當數據更改時,分派將冒泡的自定義事件類。此事件有一個屬性,告訴您該值是否爲負值。
  • 由於來自渲染器的自定義事件會向網格起泡,因此您可以在網格上添加一個偵聽器來處理來自所有渲染器的更改。
+0

感謝您的回覆。我主要困惑於我如何知道何時使用第一個ItemRenderer,以及何時完成了網格中的最後一個ItemRenderer。有什麼辦法可以做到嗎? – iman453 2012-07-12 17:38:57

+0

你不能。每個渲染器都會將創建完成一次(創建時),並且數據在每次**數據更改時更改**。既然你給網格的初始數據,你知道如果任何值最初是負面的。之後,您必須使用數據更改事件來查找如上所述的負值。 – 2012-07-12 17:46:41

+0

對不起,我認爲我沒有很好地解釋我的問題:) 我需要能夠判斷每次我的網格中的一組單元格是否呈現負值。所以說第一次他們都是renderered,其中一個值是負值,所以我將一個標誌設置爲True。當用戶下一次在網格中向下滾動時,我希望它是一個乾淨的石板,所以我想再次將該標誌設置爲false,並且如果任何渲染器獲得負值,我會將其設置爲true。但我想在每個「集合」的渲染開始時沒有真正的方法將標誌設置爲假。感謝您的幫助:) – iman453 2012-07-12 18:06:05