获取剪切的显示列的宽度

时间:2011-01-13 10:23:41

标签: flex datagrid width

我的项目中有一个DataGrid。它不适合表单的宽度,因此出现scrollBar。 DataGrid,在它的初始状态,显示几列和下一列的一部分(滚动后会出现)。

有什么办法,我可以得到这个的宽度,显示部分吗?

2 个答案:

答案 0 :(得分:1)

你应该得到父对象的宽度。

假设数据网格在您的应用程序中,那么您应该获得舞台的宽度。(stage.stageWidth)

如果您的数据网格位于应用程序(或任何其他父对象)中的某个x位置,那么您应该获取父对象的宽度 - 数据网格的x值。 (stage.stageWidth - dataGrid.x)

答案 1 :(得分:0)

好的,我有时间深入研究这个问题。我搜索了几个类,看看Adobe如何实现这些网格行为(部分显示列)。因此,对于那些需要处理此问题的人来说,所需的部分是在DataGrid.as文件中,方法configureScrollBars ..实际上,这部分是:

// if the last column is visible and partially offscreen (but it isn't the only
        // column) then adjust the column count so we can scroll to see it
        if (collectionHasRows && rowCount > 0 && colCount > 1 && 
            listItems[0][colCount - 1].x + 
            visibleColumns[colCount - 1].width > (displayWidth - listContent.x + viewMetrics.left))
            colCount--;
        else if (colCount > 1 && !collectionHasRows)
        {
            // the slower computation requires adding up the previous columns
            var colX:int = 0;
            for (var i:int = 0; i < visibleColumns.length; i++)
            {
                colX += visibleColumns[i].width;
            }
            if (colX > (displayWidth - listContent.x + viewMetrics.left))
                colCount--;
        }

这几乎是所有代码,需要捕获并测量网格中所有那些棘手的分隔列:)