扩展DataGrid组件,并向其添加按钮

时间:2011-02-09 16:19:14

标签: flex flex3 flex4

我想使用mxml在flex中扩展标准DataGrid组件。但我想在组件的底部添加按钮。我试过尝试以下但是它不起作用......

我是否将Button添加到了错误的元素中?

<mx:DataGrid xmlns:fx = "http://ns.adobe.com/mxml/2009"
             xmlns:mx = "library://ns.adobe.com/flex/mx"
             xmlns:s = "library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            override protected function createChildren():void
            {
                super.createChildren();

                listContent.addChild(button);
            }
        ]]>
    </fx:Script>

    <s:Button id="button" label = "asdasdas"/>
</mx:DataGrid>

2 个答案:

答案 0 :(得分:3)

您需要定义“不工作”!你收到编译错误了吗?还是运行时错误?或者按钮没有显示?我会假设后者。

DataGrid没有任何定位或布置子节点的机制。您的按钮最有可能的高度和宽度为零,位于0,0位置;使它有效地隐形。许多Flex容器类都能够调整孩子的大小和位置;但DataGrid不是容器,也不提供内置功能。它主要侧重于使用columns数组。

您需要覆盖updateDisplayList()来定位函数。很可能你需要在整个过程中对commitProperties()和measure()进行更改。您可能还需要重新设置列的位置和大小,以免干扰新按钮。如果东西被隐藏在私人方法中(很可能),那么你就是一个不那么有趣的时间。

阅读Flex Component LifeCycle methods以获取更多信息,并查看DataGrid代码以了解其功能。

您可以更轻松地将按钮和DataGrid放在容器中,并将该容器视为单个实体,而不是尝试在DataGrid内部渲染Button。

答案 1 :(得分:-2)

知道了。我需要做的就是替换listContent.addChild(button);与...

parent.addChild(按钮);

谢谢!