使用动态列修复数据网格宽度

时间:2009-12-28 13:56:46

标签: flex

我有一个包含在vbox中的数据网格,这个数据网格充当电子表格,它包含70列,最初10个是可见的,其余的是隐藏的,用户选择动态显示哪些其他列。 我需要这个datagrid使用可用的最大屏幕宽度,所以我已经将应用程序的宽度设置为100%以及vbox和datagrid,我还将datagrid的horizo​​ntalscrollpolicy设置为“auto”,因此列越多用户选择他可以使用网格的水平滚动条查看其余添加的列。根据显示器的大小,如果用户有一个巨大的显示器,他将不会像使用中小型显示器的用户那样拥有很长的滚动条。

问题是我显示的列越多,datagrid就会重新生成,导致应用程序的水平滚动条出现,让我看到2个相邻的水平滚动条,其中一个是数据网格,下面是应用程序之一。这对用户来说既令人困惑又烦恼,现在我必须使用两个滚动条来查看添加的新列以及数据网格上方的其他控件不完全可见,我必须向右滚动应用程序栏以查看它们。

我不明白,为什么datagrid在一定数量的列之后会自行伸展。最初当数据网格有10列并且我开始显示其他列时,数据网格的水平滚动条会自动显示并且它会持续变长,而当我到达列数50时添加更多列,数据网格会自行延伸,最后在1280x800的分辨率下对其进行测试并出现应用程序的水平滚动条(数字50将与另一个分辨率不同)。

如何阻止此行为?我只希望数据网格填充可用的最大屏幕宽度,当有更多列时,那么只有数据网格的水平滚动条用于向左和向右滚动。只通过网格,而不是整个应用程序。

提前致谢

3 个答案:

答案 0 :(得分:3)

我发现2个解决方案要么将datagrid的属性minColumnWidth设置为一个小值,例如5,这将修复数据网格的宽度并阻止应用程序的滚动条显示,或者您可以使用此解决方案找到here < / p>

答案 1 :(得分:0)

我想你可能想改变你的做法。关闭dataGrid的Horizo​​ntal scroll策略,并使用滚动条作为容器对象。然后,当显示每列时,您可以添加数据网格的宽度。根据我的经验,这将比试图强制数据网格上的滚动条给你一个更一致的结果。

答案 2 :(得分:0)

据我所知,我不认为VBox是必要的;也许你必须管理scrollPolicy和最大/最小高度/宽度值。 尝试此示例,使用您的值更改VALUE AAAA / BBBB。 希望有用

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication 
minWidth="VALUE AAAA" 
minHeight="VALUE BBBB" verticalScrollPolicy="off" 
horizontalScrollPolicy="off" 
xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:DataGrid resizableColumns="false" 
        horizontalScrollPolicy="on" 
        verticalScrollPolicy="on" 
        width="VALUE AAAA" 
        height="VALUE BBBB">
        <mx:columns>
            <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
            <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
            <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
        </mx:columns>
    </mx:DataGrid>
</mx:WindowedApplication>