【问题标题】:Fixing a datagrid width with dynamic columns使用动态列修复数据网格宽度
【发布时间】:2010-12-30 11:41:16
【问题描述】:

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

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

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

如何阻止这种行为?我只希望数据网格填充可用的最大屏幕宽度,当有更多列时,将只有数据网格的水平滚动条用于仅在网格中左右滚动而不是整个应用程序。

提前致谢

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    我认为您可能想改变您的方法。关闭 dataGrid 的水平滚动策略,并使用容器对象的滚动条。然后,随着每一列的显示,您可以添加到数据网格的宽度。以我的经验,这将给你一个比试图在数据网格上强制滚动条更一致的结果。

    【讨论】:

    • 恐怕这是不可能的,因为我在数据网格上方有一个选项卡导航器,关闭数据网格的水平滚动条并依靠容器的滚动条意味着为了让用户点击例如,最后 3 个选项卡必须向右滚动很多才能找到其余选项卡,因为我将在添加每一列时增加数据网格的宽度。我只想要数据网格的滚动条而不是容器。谢谢
    • 如果你想使用这个选项,你可以添加一个只有 dataGrid 的子画布,这样你就可以让一个孩子在不影响 tabNav 的情况下放置滚动条。
    【解决方案2】:

    在我看来,我不认为 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>
    

    【讨论】:

      【解决方案3】:

      我找到了 2 个解决方案,要么将数据网格的属性 minColumnWidth 设置为一个较小的值,例如 5,这将固定数据网格的宽度并防止应用程序的滚动条显示,或者您可以使用找到的解决方案 here

      【讨论】:

      • 那个链接是一个很好的解决方案
      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2016-01-14
      • 1970-01-01
      • 2011-07-21
      相关资源
      最近更新 更多