2013-03-22 58 views
0

一些作品AdvancedDataGridColumn比GridColumn更先進嗎?

<s:GridColumn dataField="country.code" headerText="Country Code"/> 

的東西,不

<mx:AdvancedDataGridColumn dataField="country.code" headerText="Country Code" width="50" /> 

我們還有很多宏偉的孩子一樣的屬性country.code,我們必須使用AdvancedDataGrid。縱觀GridColumn的函數集dataField(value:String),只有Normal Grid支持點「。」。

我們不想使用labelFunction,因爲我們有50多個這樣的列......如果有辦法擴展Advanced Grid Column來支持點嗎?

您能否提出一個解決方案?謝謝

+0

您可以使用value對象爲dataProvider填充ArrayCollection,併爲ADG中使用的每個dataField保留一個屬性。乖乖,你必須解析所有的數據,然後再使用它。 – michaPau 2013-03-22 12:14:43

回答

2

AdvancedDataGrid是一個mx組件,因此它比Spark DataGrid舊。因此,Spark DataGrid只是帶來了新功能(與舊的mx DataGrid相比)。

如果你想在ADG此功能,您有兩種方法:

  1. 頭向Apache Flex JIRA並註冊一個「改善」的問題。 也許你會很幸運,有人會選擇這個。但我不會相信它:ADG由Adobe(很久以前)外包,與其他組件相比,它是一塊糟糕的代碼;你不會輕易找到願意在遺留污水池中潛水的人。
  2. 把事情交到你自己的手中。克隆Apache Flex回購;添加所需的功能;將您的補丁提交給Apache Flex社區。如果你準備好了解決方案,他們會很快回應。
+0

這裏有一個相關的錯誤:https://issues.apache.org/jira/browse/FLEX-33248。我在這裏提到它作爲我如何自己修復相關問題並將其提交給社區的例子。該代碼現在是Flex 4.9的一部分。 – RIAstar 2013-03-22 12:25:33

+0

我不認爲領導者會批准從Flex4.6輕鬆移動到Flex4.9 ....所以沒有簡單的解決方案,對吧?我想我必須自己解決一些問題。感謝社區的努力 – 2013-03-22 18:48:56

+0

這正是您可以用來說服領導者採取行動的一種論據。 Apache Flex現在每隔幾個月就要開始一個新的(次要)版本。爲什麼堅持使用舊版本,而不是利用新版本的改進? – RIAstar 2013-03-22 19:24:31

1

我們實際上已將此支持添加到我們的Extended version of AdvancedDataGrid。這個解決方案非常簡單,只需要擴展AdvancedDataGridColumn(還有一些其他的東西需要考慮,比如排序,還有我們過濾器等等,但是這個想法就像下面的東西:)我們添加了一些東西來支持內置的格式等,所以下面的代碼只是針對這個特定問題的僞代碼,而不是來自代碼庫的實際代碼。

public class ExtendedAdvancedDataGridColumn{ 


      public var enableNestedPropertySupport:Boolean=true; 
      public override function itemToLabel(data:Object, withFormatting:Boolean=true):String 
      { 
       if(enableNestedPropertySupport){ 
        return UIUtils.resolveExpression(data,dataField); 
       } 
       else{ 
        return super.itemToLabel(data, withFormatting); 
       } 
      } 

     }