2011-04-20 28 views
0

我試圖在沒有從數據調用返回結果時將標籤覆蓋到AdvancedDataGrid上。在Flex 3中的AdvancedDataGrid上覆蓋文本

這裏是什麼,我試圖完成http://i.stack.imgur.com/6Djga.png

我試過下面這以前的答案一個樣機:Drawing an overlay in custom flex component,但由於移動AdvancedDataGrid不是Container這不會爲我工作(並因此沒有一個rawChildren屬性)。

我寧願不需要搞亂數據提供者,因爲這個表將被用在許多位置,這些位置會有不同的列和labelFields。

歡迎任何建議。

回答

0

將AdvancedDataGrid放入一個容器中,並附上標籤疊加層。將標籤放置在DataGrid頂部;並根據dataProvider的長度更改其可見性。

+0

感謝您的答覆,不幸的是這不會爲我工作,因爲我有一個大的既定代碼庫的工作,我不能改變我們的AdvancedDataGrid的子類可以做到這一點,而不會破壞很多事情。 – david 2011-04-20 20:26:19

+0

@David你只需要替換AdvancedDataGrid的子類和另一個包含該容器的類。這應該不會太難。如果您需要在新類中鏡像advancedDataGrid的許多屬性,可能會很乏味;但它應該仍然可行。 – JeffryHouser 2011-04-20 21:40:34

+0

@David和@Flextras,這在實踐中是可行的,我們在ADG的擴展中使用了這一功能,並使用綁定將這些屬性傳遞給底層的ADG。它最終成爲一團糟(有多個版本,因此很容易錯過在一個版本或另一個版本中添加一個新屬性的綁定)。最終,我們現在必須走重新分解的路線,這將是一個巨大的痛苦,但基本上我們已經選擇刪除通過,並讓網格的用戶分別處理組成部分 – shaunhusain 2011-04-20 21:44:38

2

舉一個簡單的例子,以什麼Flextras提到:

<s:Group> 
    <mx:DataGrid dataProvider="{myDataProvider}"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="test1" /> 
     <mx:DataGridColumn dataField="test2" /> 
     <mx:DataGridColumn dataField="test3" /> 
     <mx:DataGridColumn dataField="test4" /> 
    </mx:columns> 
    </mx:DataGrid> 

    <s:Label text="Overlay text here" visible="{myDataProvider.length == 0}" x="10" y="35" /> 
</s:Group> 
+0

感謝您的回覆,正如我在答覆Flextras評論時所說的,這對我不起作用,因爲我無法在每個AdvancedDataGrid周圍放置容器,也不能將AdvancedDataGrid的子類更改爲這樣,而不會破壞很多事情。 – david 2011-04-20 20:56:04

+0

@david,你可以給'DataGrid'添加一個'ItemRenderer'嗎? – 2011-04-20 21:30:14