2012-06-14 45 views
0

我正在尋找一種方法來捕獲所有數據網格內容的快照,以包含延伸到屏幕底部的數據(即需要向下滾動DG以查看更多數據)。所有數據的Datagrid快照

獲取當前顯示的數據的快照很簡單:

ImageSnapshot.defaultEncoder = PNGEncoder; 
var snap:ImageSnapshot = ImageSnapshot.captureImage(myDG); 
var imageBytes:ByteArray = snap.data; 

唯一可能的解決方案,我想出了是拍攝快照,檢查如果DataGrid可滾動,滾動到下一個位置,拍攝另一張快照,並將第二張快照放到第一張快照,重複,直到數據網格結束。

該解決方案的問題是每個新快照都將顯示標題。此外,最後一個快照很可能包含上一張圖片中的數據網格數據。

有沒有人有任何其他的想法如何做到這一點?

+0

你的目的是做什麼快照?你想做類似於數據分頁的事嗎? – michael

+1

來自用戶的請求能夠通過電子郵件發送數據網格的內容。小睡後,我有一個新的想法...爲什麼不把它保存爲CSV並將其附加到mailto而不是.png ???會更容易一些。這是下一個兔子洞,讓我跑下來。謝謝。 – Dom

回答

1

我正在尋找一種方式來利用所有的DataGrid的 內容的快照,包括延伸超過 屏幕底部的數據(即需要滾動DG往下看更多的數據)。

在基於Flex的列表類(包括DataGrid)中,數據不會超出屏幕的底部。您的dataProvider中的每個項目都使用itemRenderer顯示。 itemRenderer將只爲顯示的可視組件數量創建,而不是爲dataProvider中的每個項目創建。

當您滾動瀏覽列表時,每個itemRenderer的data屬性都會更改;從而改變顯示。滾動實際上只是數據的模擬變化。我把整個過程渲染器稱爲回收。

如果你想創建一個DataGrid的快照並顯示所有數據,你將不得不創建和渲染所有的數據。在MX DataGrid中,您可以通過調整高度來完成此操作,以便所有項目都可見。在大多數火花布局中,有一個屬性useVirtualLayout來控制它。不過,我不知道它是否可以在Spark DataGrid中禁用。

+0

這就是我所害怕的。我檢查了數據網格沒有useVirtualLayout選項。另外,縮小字體以適應所有內容到一個屏幕中並不是一種選擇,因爲只有很多數據,當圖像被放大以查看時,分辨率會很糟糕。謝謝 – Dom