AdvancedDataGridColumn不如GridColumn先进?

时间:2013-03-22 11:27:58

标签: flex datagrid advanceddatagrid

有效的东西

<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多个这样的列...如果有扩展高级网格列以支持点的方法?

你能建议一个解决方案吗?谢谢

2 个答案:

答案 0 :(得分:2)

AdvancedDataGrid是一个mx组件,因此它比Spark DataGrid更旧。因此,Spark DataGrid只会带来新功能(与旧的mx DataGrid相比)。

如果您想在ADG中使用此功能,您有两种方法:

  1. 转到Apache Flex JIRA并注册“改进”问题。 也许你会很幸运,有人会选择这个。但我不会指望它:ADG由Adobe(很久以前)外包,与其他组件相比,它是一段糟糕的代码;你不会轻易找到愿意潜入遗留污水池的人。
  2. 自己动手。克隆Apache Flex repo;添加所需的功能;将您的补丁提交给Apache Flex社区。如果您准备好了解决方案,他们会很快回复。

答案 1 :(得分: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);
                }
            }

        }