Flex DataGrid列宽

Chr*_*eis 2 apache-flex datagrid column-width

在我的flex应用程序中,我将列的宽度和可见性存储在xml文件中.当应用程序加载时,它会从xml文件中读取并根据需要设置列值:

for(i = 0; i < columnsOrder.length; i++){
    newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1];
    newOrder[i].visible = (Number(columnsVisiblity[i]) == 1);
    newOrder[i].width = Number(columnsWidth[i]);
}
myDG.columns = newOrder;
myDG.invalidateList();
Run Code Online (Sandbox Code Playgroud)

问题似乎是设置可见性(它正确设置可见字段但是会增加宽度)...我在设置宽度(循环外部)之后以及循环之前尝试设置它.如果我不对可见性做任何事情,它会正确调整列的大小.

有任何想法吗?

tou*_*dan 6

在类文件的顶部添加import语句:

import mx.core.mx_internal;

然后使用mx_internal命名空间删除,删除列的所有者,更改宽度,然后重新设置父级:

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;
    }
Run Code Online (Sandbox Code Playgroud)

这应该做的伎俩(好吧,它经过几天的咒骂后为我们做了)