0

有用的东西

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

没有的东西

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

我们有更多的孙子属性,比如country.code,我们必须使用 AdvancedDataGrid。深入研究 GridColumn 的函数 set dataField(value:String),只有 Normal Grid 支持点“.”。

我们不想使用 labelFunction ,因为我们有 50 多个这样的列......如果有办法扩展 Advanced Grid Column 以支持 dot ?

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

4

2 回答 2

2

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

如果您想要 ADG 中的此功能,您有两种方法:

  1. 前往Apache Flex JIRA并注册一个“改进”问题。也许你会很幸运,有人会捡起这个。但我不会指望它:ADG 是由 Adob​​e 外包的(很久以前),与其他组件相比,它是一段糟糕的代码;你不会轻易找到愿意潜入那个遗留污水池的人。
  2. 把事情掌握在自己手中。克隆 Apache Flex 存储库;添加所需的功能;将您的补丁提交给 Apache Flex 社区。如果您准备好解决方案,他们会很快做出回应。
于 2013-03-22T12:19:36.070 回答
1

实际上,我们已将此支持添加到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);
                }
            }

        }
于 2013-03-29T15:54:38.603 回答