我想使用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>
答案 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(按钮);
谢谢!