要使用單個DataGrid和單個列表執行此操作,請在列表中使用基於選項卡激活(針對單個列表部分)更改的篩選器函數。使用單個DataGrid的一種簡單(儘管可能很笨拙)的方法是將DataGrid覆蓋在TabNavigator上。這是很容易使用絕對佈局像一個畫布容器做到:
<mx:TabNavigator x="120.7" y="127.35" width="496" height="276">
<mx:Canvas label="Test" width="100%" height="100%">
</mx:Canvas>
<mx:Canvas label="Test2" width="100%" height="100%">
</mx:Canvas>
</mx:TabNavigator>
<mx:DataGrid x="305" y="169">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="col1"/>
<mx:DataGridColumn headerText="Column 2" dataField="col2"/>
<mx:DataGridColumn headerText="Column 3" dataField="col3"/>
</mx:columns>
</mx:DataGrid>
只要將DataGrid是上市後在MXML它會顯示在頂部與TabNavigator。當然,您需要注意在數據網格的每個選項卡上留下適當的大小空間等等。還有其他的方法可以做到這一點,但這可能是最簡單的,也可能是最安全的 - 假設您希望DataGrid在全部選項卡上可見。
但是,如果出現這種情況,您可能還需要考慮縮小TabNavigator的大小以僅包含應該在選項卡更改中更改的「東西」,將DataGrid保留在同一個更高級別的容器中作爲TabNavigator但不重疊。
如果您需要DataGrid僅在某些選項卡上可見但不是其他選項,則還可以使用actionscript在選項卡容器上調用addChild/removeChild。這工作正常和removeChild之文檔甚至提出,這是一個典型用途:
從這個容器的 子列表中刪除子DisplayObject。 刪除的孩子將其父母 屬性設置爲空。子女將 仍然存在,除非明確 銷燬。如果將其添加到另一個容器,它將保留其最後的 已知狀態。
這是一個好主意。謝謝。還有一個問題,如果我想在不同的選項卡視圖上使用相同的DataGrid,該怎麼辦?這甚至有可能嗎? – user283403 2010-05-26 07:21:07
我目前沒有安裝Flash Builder,但我猜你可以通過在選項卡外定義DataGrid,然後使用addChild()將它添加到選項卡來實現此目的。 我不確定這會起作用,或者如果這是您需要的,但它值得一試。 – 2010-05-29 04:53:16