Apache flex FlexDataGrid列赢得';t调整大小

Apache flex FlexDataGrid列赢得';t调整大小,apache-flex,actionscript,Apache Flex,Actionscript,我在尝试调整DataGrid中的列时遇到了严重问题。我已经干了一天多了,现在头痛得要命,我已经束手无策了 本质上,我有一个TabNavigator组件,其中包含NavigatorContent子项。在每个NavigatorContent子项中,我都有一个DataGrid,我将其宽度设置为100%(这是能够处理浏览器窗口大小调整所必需的)。我在每个选项卡中使用优秀的数据网格 现在,我正在使每个数据网格中的一些列可见/不可见,这很好。但是,我发现列宽设置不正确。每当我设置列宽(使用代码)时,所有的列

我在尝试调整DataGrid中的列时遇到了严重问题。我已经干了一天多了,现在头痛得要命,我已经束手无策了

本质上,我有一个TabNavigator组件,其中包含NavigatorContent子项。在每个NavigatorContent子项中,我都有一个DataGrid,我将其宽度设置为100%(这是能够处理浏览器窗口大小调整所必需的)。我在每个选项卡中使用优秀的数据网格

现在,我正在使每个数据网格中的一些列可见/不可见,这很好。但是,我发现列宽设置不正确。每当我设置列宽(使用代码)时,所有的列似乎都设置为正确的宽度,除了我最近使其可见的列和紧靠其左侧的列。最近可见的一个非常小(虽然我将其宽度设置为30),而这些列左侧的一个非常大(尽管我也将其宽度设置为30)

我认为这与数据网格的生命周期有关,因为第一个数据网格表现良好。当我单击其他选项卡时,我发现其他数据网格的宽度设置不正确

但是,如果我“看到”其中一个有问题的数据网格(即它出现在屏幕上),并且重新运行调整列大小的代码,则列的大小是正确的

我在网上尝试了很多推荐的东西,包括下面列出的问题,但都没有用

这是我用来调整列大小的代码(取自答案)

我们将非常感谢您的任何帮助

我已经看过以下答案。
(所以,在经历了大量的头部损伤后,我终于找到了一个解决方案(至少解决了我的问题,不确定它是否能帮助其他人,但我想我还是把它贴在这里,因为你永远不知道什么能帮助其他人)

我决定,既然在DataGrid出现在屏幕上时调用调整大小代码就行了,那么我就需要这样做。所以我考虑根据单击的选项卡来为相关DataGrid设置调整大小代码。没有那么简单,因为似乎没有一种简单的方法来实现选项卡的单击处理程序。我很快就找到了答案他找到了解决办法

本质上,通过循环遍历选项卡导航器的子项,获取按钮并添加事件侦听器,可以为每个选项卡按钮添加一个单击处理程序

然后,在处理程序中执行需要执行的操作

代码示例(与以下示例略有不同):

受保护函数tbGridArea\u creationCompleteHandler(事件:FlexEvent):无效
{
for(var i:int=0;i
您是否可以添加您所做的工作示例,以便我们可以帮助您完成一小段代码。我知道我通常应该包含比我已经包含的更多的示例代码,但我必须粘贴很多代码。有太多的事情一起发生。我希望有人能够就这些问题找到一个通用的解决方案不管怎样,我最近找到了一个解决方案,我现在就发布。
public static function resizeColumn(col:DataGridColumn, size:int):void
        {
                var owner:* = col.mx_internal::owner
                col.mx_internal::owner = null;

                col.width = size;

                col.mx_internal::owner = owner;
        }
        protected function tbGridArea_creationCompleteHandler(event:FlexEvent):void
        {
            for ( var i:int=0; i < tbGridArea.getChildren().length; i++ )
            {
                var tab:Object = tbGridArea.getTabAt(i);
                tab.addEventListener( FlexEvent.BUTTON_DOWN,myTabClickHandler );
            }
        }

        private function myTabClickHandler(event:Event):void {
            switch(event.currentTarget.label) {
            // do whatever you need to do here
            }
        }